考慮一下:爲什麼在繼承泛型類型時,必須使用父類型限定使用嵌套類型?
[SomeAttr(typeof(Bar))]
class Foo {
class Bar {
}
}
...這:
class Foo : ISomething<Bar> {
class Bar {
}
}
第一個例子編譯,第二個沒有。要使用嵌套式引用從一個泛型類型繼承時,我必須與家長的類型名稱限定它:
class Foo : ISomething<Foo.Bar> {
class Bar {
}
}
我的問題是,爲什麼呢?以及爲什麼從父類型的屬性引用時不適用此限制(第一個示例)?
我的猜測是編譯器在編譯類之後處理類屬性?但是我對編譯器內部知識不夠了解甚至不知道如何找到/證明答案。雖然非常有趣的問題! – BateTech
以這種方式使用公共嵌套子類的實際例子是什麼?爲什麼有一個嵌套類時,父類是依賴於孩子與只是使它在同一個名字空間的父類類? – BateTech
@BateTech我在使用代碼生成器時發現了這個限制,它只允許我在類內部注入代碼來定義我自己的方法。 –