プロパティを介して任意の内部クラスからメンバーにアクセスできるが、特定の内部クラスによってのみ設定できる構造体を定義するにはどうすればよいですか?(もし可能ならば。)
それが不可能な場合、同様の要件を達成するための回避策はありますか?
編集1:以下
理由:
_xと_arrBの2つのメンバーを持つクラスAがあります。_xは、xを介して内部クラス(クラスAを除く)によって読み取ることはできますが、変更することはできません。
また、内部クラスが_arrBのstructB要素を読み取り、それらのstructBのメンバーを読み取ることができるようにします。しかし、私はクラスAが_arrBのstructB要素またはそれらのstructBのメンバーのいずれかを変更できるようにしたいだけです。したがって、どの内部クラスがそのメンバーを変更できるかを指定できる構造体が必要だと思います。[1]
class A
{
private int _x;
internal int x
{
private set
{
_x = value / 2;
}
internal get
{
return _x * 2;
}
}
private B[] _arrB;
internal B[] arrB
{
private set
{
_arrB = value;
}
internal get
{
return _arrB;
}
}
public A()
{
_x = //value read from somewhere;
//do something to determine size
_arrB = new B[size];
//populate _arrB
...
}
}
注:内部クラスとは、ネストされたクラスではなく、同じアセンブリ内のクラスを意味します。
[1]ただし、_arrBは配列であり、オブジェクトであり、参照型です。内部クラスが_arrBの参照を取得すると、structBの要素が制御なしで変更される可能性があります。内部クラスで_arr[0]をnullに設定したくないことに気づきました。したがって、どのソリューションでもこれを考慮に入れる必要があります。
その日の残りの時間について考え、考えたときに解決策を投稿します。