0

有没有办法做到这一点:

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

以编程方式?

我不想在这种情况下将属性用作“ACommand”,因为它是基类中的通用实现。谢谢伊恩

4

2 回答 2

1

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

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

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

于 2012-09-06T17:26:59.313 回答
0

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

示例(VB 语法):

AddHandler workItem.Commands("ACommand").ExecuteAction, AddressOf DoACommand
RemoveHandlerHandler workItem.Commands("ACommand").ExecuteAction, AddressOf DoACommand
于 2015-01-15T12:49:03.987 回答