我有一个(现有的)类型类项:类型化<> /无类型设计
Items<T>
T Value { get; }
T可以是双,字符串或者int。
然后,我有一个类,必须持有几个项目的实例。在这个类的单个实例中,T总是相同的。既然这样,实际包含的类型是由属性确定,并且该容器不键入:
Data
DataType { get; set; }
Items<double>
double Value;
Items<string>
// ... and so on. Nasty stuff.
在理想情况下,当然,这将是
Data<T>
Items<T>
T value
数据实例是从头在代码创建,并且可以从数据库加载。所以当然,我们将来会有一个工厂,但Create方法的返回类型是什么?
更糟糕的是,我需要这样的:
DataCollection
// HERE'S THE PAIN: What's the type here?
List of Data<> instances with differing types
foreach (? data in someDataCollection)
if (thetypeof data is double)
doSomething();
else
doSomethingElse();
现在,我可以解决这个问题,但我看不到解决这个干净的方法。
我的第一个问题是DataCollection的声明。列表的类型是什么?名单<对象>,所以它可以容纳数据<双>和数据<字符串>?
请出示实际的代码,而不是伪代码。 – 2011-04-06 16:49:48