Как определить структуру, члены которой могут быть доступны любым внутренним классам через свойства, но могут быть установлены только определенным внутренним классом? (Если это возможно.)
Если это невозможно, есть ли работа по выполнению аналогичного требования?
Редактировать 1: ниже
Причина:
У меня есть класс A с двумя членами _x и _arrB. _x может быть прочитано, но не изменено внутренними классами (кроме класса A) до x.
Я также хочу разрешить внутренним классам читать элементы structB в _arrB и читать члены этих structB. Но я только хочу, чтобы класс A мог изменять либо элемент structB в _arrB, либо член этих 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. Поэтому любое решение должно учитывать это.
Я подумаю об этом до конца дня и опубликую решение, когда я подумаю об этом.