我在 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
}
我想不会,因为您不能再对基类中的接口(interface)进行操作,因为在您知道实际实例是什么类型之前,您不会知道您得到的是什么类型,但也许 C# 中有一些神奇的东西和这个类似吗?
最佳答案
你可以像这样使基类泛化:
public class Base<T>
{
public List<T> Data { get; set; }
}
然后在创建派生类时,可以指定T
像这样:
public class Derived : Base<Elephant>
{
}
对于 Derived
的消费者, Data
的类型属性是 List<Elephant>
.
关于c# - 派生类定义的基类集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35281510/