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

标签 c# .net types generics

能否请您为我澄清所问的问题 here .

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

public class Metadata<DataType> where DataType : struct 
{ 
   private DataType mDataType; 
}
  1. 被替换为从同一接口(interface)或抽象类派生的派生类是否可能是因为 IList<> 成员必须共享一些公共(public)对象类型?
  2. 必须将该通用类型与 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/

相关文章:

scala - 类型构造函数的类型边界中的下划线

c# - 替代嵌套类型的类型 Expression<Func<T>>

c# - 测试列表中的所有值是否都是唯一的

c# - 在 Visual Studio 中重构 .asmx 文件

c# - 创建字典<string, class>

c# - 如何阻止 setter 通过 Web 服务公开?

c# - typeof(T) 与 Object.GetType() 性能对比

c# - 错误: "The type cannot be used as type parameter in the generic type of method." Can this be solved with constraints or casting?

c# - LINQ-to-SQL orderby 问题

c# - 每隔几秒重复一个功能