Я обеспокоен тем, что вы фактически делаете «ручное связывание» (плохое) для свойства в производном классе со значением в базовом классе (также плохое). Весь смысл использования наследования состоит в том, что производный класс может получить доступ к вещам в базовом классе. Используйте модификатор protected
, чтобы указать, что вещи должны быть доступны только для производных классов.
Я бы предложил этот (потенциально) более правильный метод:
Базовый класс:
protected virtual void OnMyValueChanged() { }
Производный класс:
protected override void OnMyValueChanged() { /* respond here */ }
Действительно, подписка на событие в базовом классе того самого класса, который вы пишете, кажется невероятно задом наперед - какой смысл использовать наследование над композицией, если вы собираетесь собирать себя вокруг себя? Вы буквально просите объект сказать себе, когда что-то происходит. Вы должны использовать для этого вызов метода.
В терминах "когда одно свойство было изменено в ViewModelBase - я хочу изменить свойство в моей ViewModel" , ... это один и тот же объект!