Я запустить анализ кода в Visual Studio и получил следующее предупреждение:C# свойство Коллекции должно быть прочитано только
CA2227: свойства Коллекции должны быть только для чтения.
Я знаю, что это значит и почему я не должен иметь публичный набор. Но я не уверен, как с этим бороться.
В моей ViewModel
у меня есть это свойство:
private ObservableCollection<Foo> _foos = new ObservableCollection<Foo>();
public ObservableCollection<Foo> Foos
{
get { return _foos; }
set
{
_foos = value;
OnPropertyChanged();
}
}
Это свойство привязывается к представлению.
Логика, как заполнить эту коллекцию, находится в бизнес-слое. Есть функция, которая возвращает
ObservableCollection<Foo>
Если у Foos нет сеттера, я не могу этого сделать.
Foos = BusinessLayer.GetFoos();
Я могу это сделать:
_foos = BusinessLayer.GetFoos();
OnPropertyChanged("Foos");
или это:
var foos = BusinessLayer.GetFoos();
foreach(var foo in foos)
{
Foos.Add(foo);
}
Что является подходящим способом? Есть ли лучшие способы?
Я согласен с тем, что свойства коллекции должны быть доступны только для чтения. Создавайте коллекцию один раз, изнутри своего класса. Затем обработайте его, а не с самой коллекцией. –
BTW, ваш бизнес-уровень не должен возвращать ObservableCollections. Это концепция ViewModel, которая не имеет ничего общего с бизнес-логикой. –