考虑一下:为什么在继承泛型类型时,必须使用父类型限定使用嵌套类型?
[SomeAttr(typeof(Bar))]
class Foo {
class Bar {
}
}
...这:
class Foo : ISomething<Bar> {
class Bar {
}
}
第一个例子编译,第二个没有。要使用嵌套式引用从一个泛型类型继承时,我必须与家长的类型名称限定它:
class Foo : ISomething<Foo.Bar> {
class Bar {
}
}
我的问题是,为什么呢?以及为什么从父类型的属性引用时不适用此限制(第一个示例)?
我的猜测是编译器在编译类之后处理类属性?但是我对编译器内部知识不够了解甚至不知道如何找到/证明答案。虽然非常有趣的问题! – BateTech
以这种方式使用公共嵌套子类的实际例子是什么?为什么有一个嵌套类时,父类是依赖于孩子与只是使它在同一个名字空间的父类类? – BateTech
@BateTech我在使用代码生成器时发现了这个限制,它只允许我在类内部注入代码来定义我自己的方法。 –