日期:2014-05-19  浏览次数:21015 次

C#2.0实现ICollection和ICollection<T>的问题,高手帮忙~分不够可以再加~!~在线等~
1、想要模拟实现TreeNodeCollection,查看了一下元数据,TreeNodeCollection继承自IList,   ICollection,   IEnumerable。其中有实现方法
public   virtual   int   Add(TreeNode   node);

自己写的类,同样继承自IList,   ICollection,   IEnumerable,但是在实现public   int   Add方法时,IDE提示,必须使用public   int   Add(object   item)   object当作参数,而无法使用自定义类型,比如UnitNode[例:public   int   Add(UnitNode   item)]。我也看了.net提供的其他的几个实现了IList,   ICollection,   IEnumerable的类,都是用的是定义的类型,比如TabPageCollection,也继承自IList,   ICollection,   IEnumerable,但是查看元数据的时候,根本没有实现int   Add(object   item)。。所以就不明白了。。希望高手指点一下,如何在继承自IList,   ICollection,   IEnumerable三个接口时候,实现Add方法添加自定义的类型。。

2、在实现ICollection <T> 的时候,用什么做数据集呢?ArrayList不支持范型,List <T> 缺少IsReadOnly这个属性。。请问在用List <T> 的时候,如何得到IsReadOnly这个属性呢?同样的还有IsFixedSize,SyncRoot和IsSynchronized也不知道如何实现。另外,还可以用别的时么代替List <T> 么?

------解决方案--------------------
UserCollection <T> : IList <T> , IList{
public virtual void Add(T t)
{
//你的代码
}

void IList.Add(object o)
{
Add(o as T);
}
}

不知道是不是你想要的。
------解决方案--------------------
1、
public interface imy
{
void test();
}
public class my:imy
{
void test()
{
//overload;
}
imy.test()
{
//override ;
}
}
2、
List <yourclas> ylist;
IList list = ylist as IList
???