アクセス修飾子のない型のこのプロパティ(つまり、internal
アクセス):
class SomeType {
private int length;
internal int Length {
get { return length; }
set length = value; }
}
}
SomeType のアセンブリ内のすべての型とアクセサーを使用できるようget
にしset
ます。問題: アクセスをSomeType (および実際の SomeType) から派生した型のみに制限するにはどうすればset
よいですか?
internal int Length {
get { return length; }
protected set length = value; }
}
はコンパイラによって拒否されます。これは、protected
よりも制限が緩いと言われているためですinternal
(おそらく:protected
との交差がありますが、完全に含まれてinternal
いるわけではありません--> 派生型は の範囲を超えて存在できます)。internal
internal
アセンブリ内の任意の型からアクセスされ、アセンブリ内の派生型によってのみ設定されるコードは何でしょうか?
編集: 回答を確認した後、解決策に違いが生じる可能性があるため、プロパティの別の特性を追加する必要があると思います: プロパティのタイプは実際にはSomeType
です。編集されたコードは次のとおりです。
class SomeType {
private SomeType length;
internal SomeType Length {
get { return length; }
set length = value; }
}
}
プロパティが宣言されている場合public
、コンパイラはエラーを発行します (プロパティ タイプ SomeType は、プロパティ Length よりもアクセスしにくくなります)。