有没有办法做到这一点:
[CommandHandler("ACommand")]
public void DoACommand(object sender, EventArgs e)
{
//DoSomething
}以编程方式?
我不想使用属性,因为"ACommand“在这种情况下会改变,因为它是基类中的通用实现。谢谢你,伊恩
发布于 2012-09-07 01:26:59
当我开始使用SCSF开发时,我对命令/事件做了相当多的研究,但我还没有找到一种方法来做到这一点。在加载WorkItem时运行的方法中注册所有命令处理程序将非常有用,而不是使用属性将它们分散在整个应用程序中。
在您的例子中,我唯一能建议的就是使用一个静态类,它将所有命令处理程序的名称作为常量来包含,比如CommandHandler(CommandNames.CreateEmployeeCommand).这种方法提供了几个好处: 1.如果您的命令名发生更改,您只需在静态类中更改它;2.您可以创建一个基本CommandNames类(当您使用SCSF时会为您完成此操作),该基类可以由单个模块CommandNames类继承,从而允许您拥有全局命令和模块特定命令。
我想知道您是否确实找到了将此功能添加到您的解决方案中的方法,因为它将非常有帮助。
发布于 2015-01-15 20:49:04
您可以使用全局命令集合(可通过任何工作项实例访问),选择命令并为ExeceuteAction事件注册事件处理程序。
示例(VB-语法):
AddHandler workItem.Commands("ACommand").ExecuteAction, AddressOf DoACommand
RemoveHandlerHandler workItem.Commands("ACommand").ExecuteAction, AddressOf DoACommandhttps://stackoverflow.com/questions/7499073
复制相似问题