【发布时间】:2013-11-10 22:18:34
【问题描述】:
我有一个像这样的通用类:
public class Foo<T>
{
public string SomeMethod();
...
}
我希望存储对这种类型的不同通用实例的引用列表。 例如
List<Foo<object>> foos = new List<Foo<object>>();
foos.Add(new Foo<string>());
foos.Add(new Foo<int>());
foos.Add(new Foo<Person>());
// Then do some processing like ...
foreach (var Foo<object> in foos)
{
Console.WriteLine(foo.SomeMethod());
}
etc...
foos 上的编译器错误。添加调用语句:
"Cannot convert from 'Foo<string>' to 'Foo<object>'
如何存储类型不同的泛型类型实例列表?
我不想只存储一个对象列表(ArrayList、List、List 等)并且必须使用反射来访问它们的成员!
【问题讨论】:
-
如果要在其中存储不同的类型,为什么还需要一个通用列表?你可以只使用一个普通的 ArrayList
-
因为我希望访问 Foo 类的成员并且不想使用反射来这样做。我将编辑我的问题以使其更清晰
-
@BenDaniel 那你为什么不让 Foo 成为一个非泛型类呢?
-
@Kenneth Foo 有其他返回 T 实例的方法和属性。我想保持 Foo 通用。