由派生类定义的基类集合

时间:2016-02-08 23:49:16

标签: c# generics inheritance

我甚至没有像C ++那样接近C#的经验,而是试图变得更好。

在C#中,是否存在一种创建包含属性的基类的方法,该属性是List,然后在派生类中定义该具体类型的T是什么?

public class Base
{
    public List<T> Data { get; set; }
}

public class Derived : Base
{
    // Declare to the world you use Base.data<Elephant>
    // Callers of my Data property get Elephants
}

我想不到,因为你不能再对基类中的界面起作用,因为在你知道实际实例是什么类型之前你不知道你得到的是什么类型,但也许有一些神奇的东西在C#中与此类似?

1 个答案:

答案 0 :(得分:3)

您可以像这样使基类通用:

public class Base<T>
{
    public List<T> Data { get; set; }
}

然后在创建派生类时,可以像这样指定T

public class Derived : Base<Elephant>
{

}

对于Derived的消费者,Data属性的类型为List<Elephant>