如何在 csharp 中访问泛型类的子类
本文关键字:泛型类 子类 访问 csharp | 更新日期: 2023-09-27 18:30:59
我在C#中有一个简单的问题:
我在泛型类(Box)中嵌入了一个类(属性),如下所示:
public class Box<E> where E : Box{
public class Properties {
}
}
如何从外部类引用子类(属性)?我需要与这个 java 语句等效的东西:
Shape<?>.Properties prop = new Shape<?>.Properties();
谢谢
你不能这样做。您必须指定E
。
Shape<OneBox>.Properties
是不同的阶级,那么Shape<AnotherBox>.Properties
C# 规范 (10.3.8.5)
泛型类声明中包含的每个类型声明都是 隐式泛型类型声明。写入对 嵌套在泛型类型中的类型,包含构造类型, 包括其类型参数,必须命名。
做不到。一个经典的解决方案,如果Properties
不需要E
,是这样的:
public class Box {
// So that it can't be instantiated, or you could make the class abstract
protected Box()
{
}
public class Properties {
}
}
public class Box<E> : Box {
}