У меня есть класс с именем GestorePersonale
, который содержит список экземпляров другого класса:
public List<Dipendente> Dipendenti
{
get;
private set;
}
Я хочу, чтобы этот список можно было изменять только из методов, предоставляемых классом, а не напрямую. Я заметил, что с кодом выше, можно просто сделать
var gp = new GestorePersonale();
gp.Dipendenti.Add( new Dipendente( ... ) );
и иметь возможность выполнять любые другие действия на самом
List<Dipendente>
.
Я подумал о преобразовании первого фрагмента кода в
private List dipendenti;
но я мог бы найти несколько минусов к этому:
- Это нарушило бы мое личное правило, чтобы попытаться всегда использовать общедоступные поля над личными изнутри методов класса, когда это возможно (хотя я не уверен, что это хорошая практика, поэтому любые разъяснения приветствуются);
- Это ухудшит возможность доступа любых внешних объектов к содержимому списка только для чтения , например, для выполнения запроса LINQ над содержимое списка.
Как лучше всего решить эту ситуацию?