[SomeAttribute(typeof(Child))]
public sealed class Parent
{
public sealed class Child
{
}
}
這怎麼可能?它會在屬性的實現中破壞一些東西嗎?我只是嵌套Child,因爲我堅持每個文件規則的一個類。如果孩子是在外面定義的,我不需要擔心會打破一些無限循環的屬性。子類對父類定義的屬性是可見的嗎?
[SomeAttribute(typeof(Child))]
public sealed class Parent
{
public sealed class Child
{
}
}
這怎麼可能?它會在屬性的實現中破壞一些東西嗎?我只是嵌套Child,因爲我堅持每個文件規則的一個類。如果孩子是在外面定義的,我不需要擔心會打破一些無限循環的屬性。子類對父類定義的屬性是可見的嗎?
回答您的問題:
這怎麼可能?
這與全班的知名度有關。你的Child
類是在同一個程序集中,所以SomeAttribute
仍然可以訪問它(不管它是內部/私人等)。
它會破壞屬性的實現內的東西嗎?
沒有
我只築巢
Child
因爲我堅持每個文件規則一類。
技術上可以不堅持每則文件規則的1類,因爲現在有2類(如果不考慮它的嵌套與否)。通常你會嵌套一個類,如果它是一個外部類的實現細節,我收集你的情況它不是。
如果Child
是一個公共類,然後把它放在它自己的單元中,你在這裏的嵌套的例子沒有獲得任何東西,也沒有任何意義。如果Child
類別應該緊密耦合到Parent
類別並純粹用於它內部,那麼它應該被標記爲internal
或private
。
這裏的類型解析是相對於被裝飾的東西;所以'typeof(Child)'是在「Parent'的一部分」的上下文中,顯然它可以使用'Child'(不是'Parent.Child')。你是這個意思嗎?我沒有實際的語言參考,注意 - 我只是描述了行爲。 – 2013-03-15 11:47:57
@MarcGravell即使我將Child設爲私有,編譯也很好。 – Monstieur 2013-03-15 11:51:01
這很好; 「家長」仍然可以看到「孩子」;再次,它被解析*相對於'Parent'的上下文* – 2013-03-15 11:52:12