日期:2014-05-18  浏览次数:20675 次

泛型 问题
class   A <T>
{
......
}

A <int>   ia   =   new   A <int>   ();
A <Ohter>   oa   =   new   A <Ohter> ();

现在泛型类A存在。
我想再创建类:   IntA   和   OhterA
使得:   IntA和A <int> ,     OtherA和   A <Other> 功能一样。

即:   A <int>   ia   =   new   A <int> ();
          IntA   ia   =   new   IntA();   产生的对象有一样功能。

即在一个泛型类中产生非泛型的子类。

就像微软的集合对象   有:   ObjectCollection,   TreeNodeCollect,   GridViewRowCollectin等。


------解决方案--------------------
这样可以么
class IntA:A <int>
{
......
}
class IntA:A <Ohter>
{
......
}

------解决方案--------------------
集合类没有使用泛型的,是使用object来操作的。这样的操作有限制就是要求不使用对应类型的特性,比如如果是值类型,会被隐式的装箱,需要实际的类型支持ICompare等。

但集合类型是实现了System.Collections.ICollection接口的。
以下是.net中的ArrayList的定义:
[Serializable, DebuggerDisplay( "Count = {Count} "), DebuggerTypeProxy(typeof(ArrayListDebugView)), ComVisible(true)]
public class ArrayList : IList, ICollection, IEnumerable, ICloneable


你对照的实现就可以了