c# - 派生类定义的基类集合

标签 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
}

我想不会,因为您不能再对基类中的接口(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/

相关文章:

c# - Int32.Equals 与 '==' 运算符

c# - 如何让 ASP.NET Core 返回 XML 结果?

java - 在 Java 反射中将 int 转换为 Enum

java - 通用集合作为 Java 方法参数

Swift 泛型复杂的继承

c++ - 如何强制模板 <class> 从 BaseClassA 派生?

java - 为子类设置父类(super class)属性

c# - 网络断开时的WebSocket重新连接问题

c# - 列出 Google Drive api 中的文件会导致系统格式异常

java - 动态选择类别