Установить свойства класса только через конструктор

Я пытаюсь сделать свойства класса, которые могут быть установлены только через конструктор того же класса.

Ответ 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; }
}

Ответ 4

Правильный способ:

public string MyProperty{ get; private set; }

public MyClassConstructor(string myProperty)
{
     MyProperty= myProperty;
}