返回通用类

时间:2014-01-21 20:16:10

标签: c# generics return

我有两个班级:

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通用就没问题,但我无法弄清楚它会如何。

2 个答案:

答案 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];
    }
}