考虑到 System.Windows.Input.ICommand 具有两个主要方法:
interface ICommand {
void Execute(object parameters);
bool CanExecute(object parameters);
...
}
我期望在支持命令的框架中,在调用 Execute(...) 之前会调用 CanExecute(...)。
但是,在我的命令实现内部,是否有理由在 Execute(...) 实现中添加 CanExecute(...) 调用呢?
例如:
public void Execute(object parameters){
if(!CanExecute(parameters)) throw new ApplicationException("...");
/** Execute implementation **/
}
当我进行测试时,这变得非常重要,因为我可能会模拟一些界面来支持CanExecute,并且在测试Execute时必须执行相同的模拟。
对此有任何设计想法吗?
Execute()
中调用CanExecute()
,而另一个问题询问在实现之外调用它。 - Joel B Fant