[SomeAttribute(typeof(Child))]
public sealed class Parent
{
public sealed class Child
{
}
}
これはどのように可能ですか?属性の実装内で何かが壊れますか? ファイルルールごとに1つのクラスに固執しているため、子のみをネストしています。Child が外部で定義されている場合、無限ループで属性を壊すことを心配する必要はありません。
[SomeAttribute(typeof(Child))]
public sealed class Parent
{
public sealed class Child
{
}
}
これはどのように可能ですか?属性の実装内で何かが壊れますか? ファイルルールごとに1つのクラスに固執しているため、子のみをネストしています。Child が外部で定義されている場合、無限ループで属性を壊すことを心配する必要はありません。
質問に答えるには:
これはどのように可能ですか?
それはすべて、クラスの可視性に関係しています。クラスChild
は同じアセンブリ内にあるため、SomeAttribute
(内部/プライベートなどに関係なく)引き続きアクセスできます。
属性の実装内で何かが壊れますか?
いいえ
Child
ファイルルールごとに1つのクラスに固執しているため、ネストしているだけです。
技術的には、(ネストされているかどうかに関係なく) 2 つのクラスがあるため、ファイル ルールごとに 1 つのクラスに固執していません。通常、それが外部クラスの実装の詳細である場合、クラスをネストしますが、あなたの場合はそうではありません。
がパブリック クラスである場合Child
は、それを独自のユニットに入れます。ここでのネストの例では、何も得られず、意味もありません。Child
クラスをクラスに密結合し、Parent
純粋にクラスの内部で使用する必要がある場合は、 または としてマークする必要がありinternal
ますprivate
。