【发布时间】:2014-02-08 16:06:38
【问题描述】:
我需要一个包含一组“泛型”对象的数组,其中数组中的每个元素可能具有相同的泛型类型,也可能不同。我可以解决这个问题的唯一方法是通用对象有一个基类,而数组是一组基类对象。
class abstract absgentype { }
class gentype<T> : absgentype
{
T value;
...
}
不幸的是,一个不好的副作用是,当我查看数组的内容时,我必须使用强制转换来返回实际对象,并且我必须知道泛型类型的类型才能进行强制转换.
有没有办法构建一个可以包含多个具有不同泛型类型的泛型对象的容器?理想情况下,我想做:
var p = genarray[0]; // type of p is whatever type was put into array
我不想使用类型对象或动态,因为我失去了静态类型...
【问题讨论】:
-
基本上,您可以将所有内容存储在
ArrayList中,但您仍然需要进行投射,因为ArrayList将项目存储为object。 -
另一种方法是让集合中的所有类型都实现一个公共接口,然后具有泛型类型 T 其中 T : IYourIterface
标签: c# generics containers