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