C# 如何在csharp中访问泛型类的子类?

C# 如何在csharp中访问泛型类的子类?,c#,generics,reference,C#,Generics,Reference,我有一个C语言的简单问题: 我在通用类框中嵌入了一个类属性,如下所示: public class Box<E> where E : Box{ public class Properties { } } 如何从外部类引用子类属性? 我需要与此java语句等效的内容: Shape<?>.Properties prop = new Shape<?>.Properties(); 谢谢你,你做不到。您必须指定E 属性与类和形状不同 泛型类声明中包含的

我有一个C语言的简单问题:

我在通用类框中嵌入了一个类属性,如下所示:

public class Box<E> where E : Box{
    public class Properties {
    }
}
如何从外部类引用子类属性? 我需要与此java语句等效的内容:

Shape<?>.Properties prop = new Shape<?>.Properties();

谢谢你,你做不到。您必须指定E

属性与类和形状不同

泛型类声明中包含的每个类型声明都是 隐式地创建泛型类型声明。在编写对 嵌套在泛型类型中的类型,包含构造的类型, 包括其类型参数,必须命名


不行。如果属性不需要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 {
}

哦,我不知道。。。所以Csharp?@Shatazone no中没有通配符。您可以绕过这个指定iProperty、非泛型接口的问题,并在方法/变量声明中使用它,但不能使用它来实例化Shape.Properties的对象。