如何实现想微软提供的类如DataTable.Item的那种访问方式啊?

eeff 2003-03-24 06:06:07
应该就是实现System.Collections包中的几个接口就可以了,如IEnumerable,IEnumerator等接口,但应该具体实现,举个例子来说,现在我有这样的数据结构,
"Bill"=["Bill" repeat(0-n) +] "Columns"
"Columns"=String | Date | Numeric ...基本数据类型

我如何定义Bill,Columns类实现对子"Bill"和"Columns"方便的访问,我看那种Item方式访问挺好的,就是不知道如何实现,向大家学习!
...全文
35 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbx1979 2003-03-24
  • 打赏
  • 举报
回复
索引吗?
看看书吧,书上有
cdshelf 2003-03-24
  • 打赏
  • 举报
回复
//============================================================
//==构成 ComSharpDataGrid 的数据列集合 (继承CollectionBase Abstract 类和 IEnumerable 接口)
//================================================================
public class GridColumns : CollectionBase,IEnumerable
{
//****************************************
//**实现 CollectionBase 中的 Add()方法 (添加一个项目)
//****************************************
public void Add(GridColumn pGridColumn)
{
List.Add(pGridColumn);
}

//****************************************
//**实现 CollectionBase 中的 Insert()方法 (添加一个项目)
//****************************************
public void Insert(int index,GridColumn pGridColumn)
{
List.Insert(index,pGridColumn) ;
}

//****************************************
//**实现 CollectionBase 中的 Remove()方法 (移除一个项目)
//****************************************
public void Remove(int index)
{
//-------------------------------
//--检查是否超过界限
//-------------------------------
if (index > Count - 1 || index < 0)
{
//---------------------------
//--如果超过界限,抛出错误
//---------------------------
throw new Exception("Index out of bounds");
}
List.RemoveAt(index);
}

//****************************************
//**创建 int 参数的 indexer
//****************************************
public GridColumn this[int index]
{
get
{
return (GridColumn)List[index];
}
set
{
List[index] = value;
}
}

//****************************************
//**创建 名字字符 参数的 Indexer
//****************************************
public GridColumn this[string Hearder]
{
get
{
return (GridColumn)this[this.FindIndex(Hearder)];
}
set
{
this[this.FindIndex(Hearder)] = value;
}
}

//****************************************
//**私有帮助函数,根据项目的名字,发现项目的 index
//****************************************
int FindIndex(string Hearder)
{
for (int index = 0; index < List.Count; index++)
{
GridColumn myGridColumn = (GridColumn) List[index];
if (myGridColumn.Header == Hearder)
{
return(index);
}
}
return(-1);
}

//****************************************
//**实现 GetEnumerator,返回枚举
//****************************************
public new GridColumnEnumerator GetEnumerator()
{
return new GridColumnEnumerator(this);
}

//****************************************
//**实现 IEnumerable.GetEnumerator,返回枚举
//****************************************
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}

//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
//=*GridColumns类中的枚举类 (继承IEnumerator接口)
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
public class GridColumnEnumerator: IEnumerator
{
int myIndex;
GridColumns myGridColumns;

//*****************************
//**Constructor
//*****************************
public GridColumnEnumerator(GridColumns pGridColumns)
{
myGridColumns = pGridColumns;
myIndex = -1;
}

//*****************************
//**初始化起始位置
//*****************************
public void Reset()
{
myIndex = -1;
}

//*****************************
//**前进一个位置
//*****************************
public bool MoveNext()
{
myIndex++;
return(myIndex < myGridColumns.Count);
}

//*****************************
//**返回当前项目
//*****************************
public GridColumn Current {get{return((GridColumn)myGridColumns[myIndex]);}}

//*****************************
//**实现IEnumerator.Current,返回当前项目
//*****************************
object IEnumerator.Current {get{return(Current);}}
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

}




//===========================================================
//== 构成 ComSharpDataGrid 的数据列,继承 DataColumnBase
//== 多了 OrderBy 属性
//===========================================================
public class GridColumn : DataColumnBase
{
//*****************************************
//**属性定义
//*****************************************
private string mOrderBy=""; //列表头是否支持 OrderBy (Sorting) 如果为空,则不支持,否则,支持
public string OrderBy {get{return this.mOrderBy;} set{this.mOrderBy = value;}}

//ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
#region Constructor Overload
//ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

//[][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
//[]基本参数重载
//[][][][][][][][][][][][][][][][][][][][][][][][][][][][][]

//*****************************************
//**Constructor第1个重载
//*****************************************
public GridColumn()
{
}

//*****************************************
//**Constructor第2个重载(必要的属性)
//*****************************************
public GridColumn(string pHeader,string pDataFormatString)
: base(pHeader,pDataFormatString)
{
//
}

//*****************************************
//**Constructor第3个重载(必要的属性)
//*****************************************
public GridColumn(string pHeader,string pOrderBy,string pDataFormatString)
: base(pHeader,pDataFormatString)
{
this.mOrderBy=pOrderBy;
}

//*****************************************
//**Constructor第4个重载(必要的属性)
//*****************************************
public GridColumn(string pHeader,string pOrderBy,string pDataFormatString,string pWidth,string pClass)
: base(pHeader,pDataFormatString,pWidth,pClass)
{
this.mOrderBy=pOrderBy;
}

//ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
#endregion
//ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

}

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧