Frage

i das SampleModel Projekt bin mit von MVVM Foundation .Warum ist ICommand zurückgegeben, wenn _decrementCommand als RelayCommand deklariert wird. Ich weiß, RelayCommand inherits ICommand aber ist nicht klarer sein, nur eine RelayCommand zurückkehren?

public ICommand DecrementCommand {
    get { return _decrementCommand ?? (_decrementCommand = new RelayCommand(() => --this.Value)); }
}
RelayCommand _decrementCommand;
War es hilfreich?

Lösung

Das ist das Prinzip des geringsten spezifischen Typs mit Ihnen durchkommen. Beton oder bestimmte Arten sind eine Haftung, weil sie eher belichten Dinge, die Anrufer müssen nicht über wissen, und sie sind eher nach Bedarf geändert werden (sie eine Implementierung Detail machen).

In diesem Fall, wenn Sie immer ICommand zurückkehren, dann können Sie den zugrunde liegenden Befehlstyp ohne Anrufer zu brechen ändern. Sie können auch erwarten, dass die Anrufer nicht wissen müssen, um mehr über das, was Ihre Funktion hat, als sie sollten eigentlich wissen, was bedeutet, dass sie weniger wahrscheinlich sein wird, OO Prinzipien zu brechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top