C# - 一个列表中的多个泛型类型II

时间:2009-08-29 10:33:45

标签: c# .net types generics

请您澄清一下here提出的问题。

为什么最初定义的类很重要:

public class Metadata<DataType> where DataType : struct 
{ 
   private DataType mDataType; 
}
  1. 被替换为源自相同接口或抽象类的一个,因为IList&lt;&gt;成员必须共享一些共同的对象类型吗?
  2. 必须与IList&lt;&gt;同名的常见类型类型,例如。 IList - &gt;衍生自T或IList - >派生自InterfaceT,IT?
  3. 谢谢&amp;问候, 米兰。

1 个答案:

答案 0 :(得分:8)

每个泛型类型实例化都是一种新类型。即MetaData<int>MetaData<bool>的类型不同。 编译器生成这样的类型(使用.Net refelector检查)

Namespace.Metadata`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]

因此,您无法声明异构类型的列表。您只能声明一种类型的列表。因此,有必要使所有通用的MetaData&lt;&gt;要从抽象类或接口继承的类。