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

4

您能否为我澄清这里提出的问题。

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

public class Metadata<DataType> where DataType : struct 
{ 
   private DataType mDataType; 
}
  1. 如果一个接口或抽象类被替换为从相同接口或抽象类派生的对象,那么这可能是因为IList<>成员必须共享某些公共对象类型吗?
  2. 那个公共类型必须与IList<>类型具有相同的名称,例如 IList -> 派生自T,或 IList -> 派生自InterfaceT,IT?

谢谢 & 祝好, 米兰。


2
你能否直接陈述问题,而不是指向一个问题? - Cheeso
1个回答

8
每个泛型类型实例化都是一个新的类型。例如,MetaData<int> 是一种不同于 MetaData<bool> 的类型。 编译器会生成这样一种类型(可以使用 .Net 反编译器进行检查)。
Namespace.Metadata`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]

因此,您不能声明一个由异构类型组成的列表。您只能声明一个类型的列表。因此,有必要使所有通用的MetaData<>类都继承自抽象类或接口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接