SCSF / CAB以编程方式添加CommandHandler

时间:2011-09-21 11:37:22

标签: scsf

有没有办法做到这一点:

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

以编程方式?

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

示例(VB-Syntax):

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