这可能是不可能的,但我有这个类:
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
这里还有更多内容,但我们先保持简单。使用where语句限制了通用类型(DataType)仅限于值类型。我想做的是有一个不同类型(DataType)的元数据对象列表,例如:
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
这是否可能呢?
List<object>
相比是否有任何真正的好处?它们不会停止装箱/拆箱,也不会消除需要强制转换的需求,最终,您得到的是一个关于实际DataType
的信息。我正在寻找解决这些问题的方法。如果你只是为了把实现/派生泛型类型放在一个泛型列表中而声明一个接口/类,那么这与使用List<object>
有何不同,除了多一层无意义的包装? - Saeb AminiList<Metadata<object>>
可以达到效果。 - 0b101010struct
约束,所以在这里它行不通。请参阅。 - nawfalMetaData
引用类型列表,而不是原始值类型,并且没有有关每个元素的基础值类型的(编译时)信息,这实际上就是“装箱”。 - Saeb Amini