1
[SomeAttribute(typeof(Child))]
public sealed class Parent
{
    public sealed class Child
    {
    }
}

これはどのように可能ですか?属性の実装内で何かが壊れますか? ファイルルールごとに1つのクラスに固執しているため、子のみをネストしています。Child が外部で定義されている場合、無限ループで属性を壊すことを心配する必要はありません。

4

1 に答える 1

2

質問に答えるには:

これはどのように可能ですか?

それはすべて、クラスの可視性に関係しています。クラスChildは同じアセンブリ内にあるため、SomeAttribute(内部/プライベートなどに関係なく)引き続きアクセスできます。

属性の実装内で何かが壊れますか?

いいえ

Childファイルルールごとに1つのクラスに固執しているため、ネストしているだけです。

技術的に、(ネストされているかどうかに関係なく) 2 つのクラスがあるため、ファイル ルールごとに 1 つのクラスに固執していません。通常、それが外部クラスの実装の詳細である場合、クラスをネストしますが、あなたの場合はそうではありません。

がパブリック クラスである場合Childは、それを独自のユニットに入れます。ここでのネストの例では、何も得られず、意味もありません。Childクラスクラスに密結合し、Parent純粋にクラスの内部で使用する必要がある場合は、 または としてマークする必要がありinternalますprivate

于 2013-03-15T11:41:57.363 に答える