我有一个带有类型参数的对象 - 称之为Object<T>
- 并且需要能够将一些具有不同类型参数的对象添加到列表中,如下所示:
var obj1 = new Object<SomeType>();
var obj2 = new Object<SomeOtherType>();
var list = new List<Object<WhatGoesHere>{ obj1, obj2 };
我知道我可以使用一个接口,如果它只是一个不同对象的列表,但似乎不适用于具有不同类型参数的对象列表,所以我有兴趣知道我的选项在这里?
答案 0 :(得分:4)
通常最好创建一个界面。我在大多数泛型类上都有接口,在不知道泛型参数的情况下使用它们。
interface IFoo
{
object UntypedBlah(object arg);
}
class Foo<T> : IFoo
{
object UntypedBlah(object arg)
{
return Blah((T)arg);
}
T Blah(T arg)
{
//...
}
}
List<IFoo> foos = new List<IFoo>();
foos.Add(new Foo<int>());
foos.Add(new Foo<string>());