我有两个班级:
public class Foo<T>{}
public class Bar
{
private List<Foo> foos = new List<Foo>();
public Foo GetFoo(int index)
{
return foos[index];
}
}
然而,列表和方法都说我需要一个我指定的Foos的类型参数,但我只想要Foos,所以我可以添加一个Foo&lt; int&gt;,一个Foo&lt;浮动&gt;,一个Foo&lt; Baz&gt;等等到列表,然后让方法返回一个未知类型的Foo。如果它有帮助,那么制作GetFoo通用就没问题,但我无法弄清楚它会如何。
答案 0 :(得分:5)
您可以使Foo<T>
派生自非泛型的基类(或实现接口)。然后,您可以返回List<IFoo>
,其中的属性不属于T
类型。
这将允许您拥有包含任何类型的Foo<T>
。
答案 1 :(得分:2)
public abstract class Foo
{
//general foo logic here
}
public class Foo<T>: Foo
{
//generic type specific information here
}
public class Bar
{
private List<Foo> foos = new List<Foo>();
public Foo GetFoo(int index)
{
return foos[index];
}
}