我在C#中有一个简单的问题:
我在通用类(Box)中嵌入了一个类(Properties),如下所示:
public class Box<E> where E : Box{
public class Properties {
}
}
如何从外部类引用子类(Properties)? 我需要与此java语句等效的东西:
Shape<?>.Properties prop = new Shape<?>.Properties();
由于
答案 0 :(得分:7)
你不能这样做。您必须指定E
。
Shape<OneBox>.Properties
与Shape<AnotherBox>.Properties
泛型类声明中包含的每个类型声明都是 隐式地是泛型类型声明。 撰写对a的引用时 嵌套在泛型类型中的类型,包含构造类型, 包括其类型参数,必须命名。
答案 1 :(得分:0)
无法完成。如果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 {
}