Я пытаюсь сделать свойства класса, которые могут быть установлены только через конструктор того же класса.
Установить свойства класса только через конструктор
Ответ 1
У свойств есть поля для чтения только для чтения:
public class Thing
{
private readonly string _value;
public Thing(string value)
{
_value = value;
}
public string Value { get { return _value; } }
}
Ответ 2
Эта страница из Microsoft описывает, как добиться установки свойства только из конструктора.
Вы можете создать неизменяемое свойство двумя способами. Вы можете объявить установить accessor.to быть закрытым. Свойство доступно только в пределах типа, но он неизменен для потребителей. Вы можете вместо этого объявить только get accessor, который делает свойство неизменным везде, кроме в конструкторе типов.
В С# 6.0, включенном в Visual Studio 2015, было внесено изменение, позволяющее устанавливать свойства get только из конструктора. И только от конструктора.
Таким образом, код может быть упрощен только для свойства get:
public class Thing
{
public Thing(string value)
{
Value = value;
}
public string Value { get; }
}
Ответ 3
Начиная с С# 6.0 теперь вы можете получить только свойства, которые могут быть установлены в конструкторе (даже если в самом свойстве нет определенного набора. См. Свойство с приватным установщиком против получить-только-свойство
Ответ 4
Правильный способ:
public string MyProperty{ get; private set; }
public MyClassConstructor(string myProperty)
{
MyProperty= myProperty;
}