В C# есть такая удобная штука как авто-свойства. Выглядит так:
1 2 3 |
public class Foo { public List<string> Bar {get; set; } } |
С их помощью можно удобно ограничивать доступ к свойствам без уродливых геттеров/сеттеров.
Можно так:
1 2 3 |
public class Foo { public List<string> Bar {get; private set; } //установить можно только внутри класса } |
Или так:
1 2 3 |
public class Foo { public List<string> Bar {get; } //read-only, выставить значение можно только в конструкторе } |
Также можно использовать как синтаксический сахар для геттеров/сеттеров:
1 2 3 4 5 6 7 8 9 10 |
public class Foo { private string _barJson; public List<string> Bar { get { return JsonConvert.DeserializeObject<List<string>>(_barJson); } set { _barJson = JsonConvert.SerializeObject(value); } } } |
Или даже так:
1 2 3 4 5 6 7 8 9 10 |
public class Foo { private string _barJson; public List<string> Bar { get => JsonConvert.DeserializeObject<List<string>>(_barJson); set => _barJson = JsonConvert.SerializeObject(value); } } |
Очень удобная вещь. Её нехватает в PHP.