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

时间:2013-09-12 09:21:05

标签: c# generics reference

我在C#中有一个简单的问题:

我在通用类(Box)中嵌入了一个类(Properties),如下所示:

public class Box<E> where E : Box{
    public class Properties {
    }
}

如何从外部类引用子类(Properties)? 我需要与此java语句等效的东西:

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

由于

2 个答案:

答案 0 :(得分:7)

你不能这样做。您必须指定E

Shape<OneBox>.PropertiesShape<AnotherBox>.Properties

不同

C# Specification (10.3.8.5)

  

泛型类声明中包含的每个类型声明都是   隐式地是泛型类型声明。 撰写对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 {
}