Если вы создадите класс sealed
, вы также не получите предупреждение (поскольку проблема возникает только в том случае, если вы наследуете этот класс и переопределяете член).
Редактировать после комментария OP:
Ах, верно. Я обычно сталкиваюсь с этим только тогда, когда имею дело с унаследованными виртуальными членами. Ответ Яда, пожалуй, самый полезный для вас.
Пожалуйста, обратите внимание, что вам не нужно делать всю собственность виртуальной. Учтите это:
List<Grade> Grades {
get { return _grades; }
set { _grades = value; OnGradesChanged(); }
protected virtual OnGradesChanged()
{ }
Обычно вы не хотите хранить Grades
другим способом в производном классе. Вам просто нужно сделать некоторые обновления, когда они меняются. Таким образом, вы дадите дополнительные указания производному классу и уверены, что можете доверять вспомогательному полю.
P.S.
Вы знаете, что люди могут редактировать List<Grade>
, даже если ваши классы его не видят? Вы должны рассмотреть возможность использования ObservableCollection
, который включает в себя событие, когда коллекция изменяется внешне. В этом случае вам нужно только предоставить доступное только для чтения свойство Grades
.