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

Mil*_*lan 4 .net c# generics types

能否请你澄清这里提出的问题.

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

public class Metadata<DataType> where DataType : struct 
{ 
   private DataType mDataType; 
}
Run Code Online (Sandbox Code Playgroud)
  1. 被替换为从相同接口或抽象类派生的可能是因为IList <>成员必须共享一些常见的对象类型?
  2. 必须使该公共类型与IList <>类型具有相同的名称,例如.IList - >派生自T,或IList - >派生自InterfaceT,IT?

感谢和问候,米兰.

sof*_*eda 8

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

Namespace.Metadata`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Run Code Online (Sandbox Code Playgroud)

因此,您无法声明异构类型的列表.您只能声明一种类型的列表.因此,有必要使所有通用MetaData <>类继承自抽象类或接口.