Единственный способ, которым я могу предложить написать меньше кода, - это использовать что-то вроде ReSharper для автоматической генерации кода для вас.Если вы начнете с чего-то вроде:
public class MyType
{
private int _value;
}
, вы можете сгенерировать «свойства только для чтения», чтобы дать:
public class MyType
{
private int _value;
public int Value{get {return _value;}}
}
, а затем сгенерировать конструктор, чтобы получить:
public class MyType
{
private int _value;
public int Value{get {return _value;}}
public MyType(int value)
{
_value = value;
}
}
Шаг генерации - всего 8 нажатий клавиш.
Если вы действительно хотите неизменяемый неизменяемый класс, я бы объявил его так:
public sealed class MyType
{
public int Value{get {return _value;}}
private readonly int _value;
public MyType(int value)
{
_value = value;
}
}
Это делаеткласс не выводимый (это означает, что подкласс не может изменить свое внутреннее состояние) и свойство _value
, назначаемое только во время построения.К сожалению, в ReSharper нет генерации кода для этого шаблона, поэтому вам все равно придется создавать (большую часть) его вручную.