能否请您为我澄清所问的问题 here .
为什么最初定义的类很重要:
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
- 被替换为从同一接口(interface)或抽象类派生的派生类是否可能是因为 IList<> 成员必须共享一些公共(public)对象类型?
- 必须将该通用类型与 IList<> 类型同名,例如。 IList -> 派生自 T,或 IList -> 派生自 InterfaceT,IT?
感谢和问候, 米兰。
最佳答案
每个泛型实例都是一个新类型。即MetaData<int>
是不同于 MetaData<bool>
的类型.
编译器生成这样的类型(使用 .Net 反射器检查)
Namespace.Metadata`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
所以你不能声明一个异构类型的列表。您只能声明一种类型的列表。因此,有必要使所有通用 MetaData<> 类都从抽象类或接口(interface)继承。
关于C# - 一个列表 II 中的多个泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351093/