Если у меня есть следующий код:
public class MyClass
{
public string myName { get; private set; }
public string myId { get; set; }
}
Для сеттера создана приватная переменная, сгенерированная компилятором. Я хочу, чтобы сеттер не был доступен только для инициализации объекта. Но как мне получить начальную установку переменной myName?
Читая об инициализации объекта, я обнаружил следующее:
... это только для чтения и
личное поле, представляющее
базовое хранилище имеет
генерируемое компилятором имя, которое мы
нельзя использовать в конструкторе для назначения
к этому. Решение состоит в том, чтобы использовать [...] объект
Инициализаторы
Решение будет тогда использовать:
MyClass mc = new MyClass {
myName = "What ever",
myId = "1234"
};
Но это заканчивается ошибкой компилятора, которая говорит:
Свойство или индексатор
'MyClass.MyClass.myName'
не может быть использован в этом контексте, потому что
установленный аксессор недоступен
Итак, есть ли способ добиться установки этого значения с помощью инициализации объекта? Если есть, как правильно это сделать?