2011-09-21 59 views
0

有没有办法做到这一点:SCSF/CAB编程方式添加CommandHandler

[CommandHandler("ACommand")] 
public void DoACommand(object sender, EventArgs e) 
{ 
    //DoSomething 
} 

编程?

我不想使用属性作为“ACommand”在这种情况下将改变,因为它是一个基类中的一般实现。 谢谢 Ian

回答

1

当我开始使用SCSF进行开发时,我对命令/事件做了相当多的研究,但还没找到办法做到这一点。将所有命令处理程序注册到加载WorkItem时运行的方法内将非常有用,而不是使用属性将它们分散在整个应用程序中。

我可以在你的情况下建议的唯一的事情是使用一个静态类,它包含所有命令处理程序名称作为常量,如[CommandHandler(CommandNames.CreateEmployeeCommand)]。这种方法提供了一些好处:1.如果您的命令名称发生更改,您只需在静态类中更改它; 2.您可以创建一个基本的CommandNames类(当您使用SCSF时为您完成),该类可以继承由独立模块CommandNames类允许您拥有全局命令和特定于模块的命令。

我想知道您是否确实找到了将此功能添加到您的解决方案的方法,因为这会非常有帮助。

+0

感谢标志着这个作为一个答案,即使它真的不是一个好一个。 – neverseenjack

0

您可以使用全局命令集合(可通过任何工作项实例访问),选择您的命令并注册ExeceuteAction事件的事件处理程序。

例(VB-语法):

AddHandler workItem.Commands("ACommand").ExecuteAction, AddressOf DoACommand 
RemoveHandlerHandler workItem.Commands("ACommand").ExecuteAction, AddressOf DoACommand