Sono preoccupato che si sta effettivamente facendo un ' associazione manuale '(non valida) per una proprietà in una classe derivata a un valore nella classe base (anche non valida). L'intero punto dell'utilizzo dell'ereditarietà è che la classe derivata può accedere alle cose nella classe base. Utilizzare un modificatore protected
per indicare che le cose dovrebbero essere accessibili solo alle classi derivate.
Vorrei suggerire questo metodo (potenzialmente) più corretto:
Classe base:
protected virtual void OnMyValueChanged() { }
classe derivata:
protected override void OnMyValueChanged() { /* respond here */ }
Davvero, la sottoscrizione di un evento nella classe base di la stessa classe che stai scrivendo sembra incredibilmente arretrata: che senso ha usare l'ereditarietà sulla composizione se ti componi intorno a te stesso? Stai letteralmente chiedendo a un oggetto di dire a se stesso quando succede qualcosa. Una chiamata al metodo è ciò che dovresti usare per quello.
In termini di "quando una proprietà è stata modificata su ViewModelBase - Voglio modificare la proprietà sul mio ViewModel", ... sono lo stesso oggetto!
fonte
2011-10-19 16:57:40
Il tuo 'NotificationObject' implementa l'interfaccia' INotifyPropertyChanged'? Se è così, allora è l'abbonamento di base all'evento. Altrimenti dovresti implementare 'INotifyPropertyChanged'. –