MVVM Foundation:为什么在定义为RelayCommand时返回ICommand

Jie*_*eng 2 c# mvvm mvvm-foundation

我正在使用MVVM Foundation的SampleModel项目.Wwh ICommand_decrementCommand声明为时返回RelayCommand.我知道RelayCommand继承ICommand但不会更清楚只返回一个RelayCommand

public ICommand DecrementCommand {
    get { return _decrementCommand ?? (_decrementCommand = new RelayCommand(() => --this.Value)); }
}
RelayCommand _decrementCommand;
Run Code Online (Sandbox Code Playgroud)

sir*_*ide 5

这是使用您可以逃脱的最不具体类型的原则.具体或特定类型是一种责任,因为它们更容易暴露呼叫者不需要知道的事物,并且它们更可能需要被更改(使它们成为实现细节).

在这种情况下,如果始终返回ICommand,则可以在不破坏调用者的情况下更改基础命令类型.您还可以期望呼叫者不必了解您的功能所做的事情,而不是他们实际应该知道的事情,这意味着他们不太可能违反OO原则.