【发布时间】:2011-10-22 11:48:39
【问题描述】:
鉴于 System.Windows.Input.ICommand 作为 2 个主要方法:
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 时必须进行相同的模拟。
对此有何设计想法?
【问题讨论】:
-
@CodeNaked:这并没有让我印象深刻。这询问在
Execute()内调用CanExecute(),另一个询问在实现之外调用它。 -
@CodeNaked - 我注意到可能重复的问题缺乏强有力的答案。
-
@Joel B Fant,我也是。
-
是的,我看到了这个问题。我在这里更关心 ICommand 接口内部的一致实现,而不关心它是如何被调用的。
标签: c# wpf design-patterns command