动态添加事件处理程序,在字符串中具有委托名称

时间:2009-12-14 11:15:34

标签: c# reflection .net-3.5 event-handling

我需要以这种方式为对象分配一个eventHandler:

_Element.AddHandler(UIElement.MouseLeftButtonUpEvent, 
    new RoutedEventHandler(Vars.Digit), true);

但实际上,我只有一个字符串,其中包含Vars对象实例中的“Digit”或其他方法名称。

使用反射或其他技巧可以实现这一点吗?

感谢。

1 个答案:

答案 0 :(得分:2)

是的,您可以使用Type.GetMethod找到方法,使用Type.GetEvent找到事件,然后使用EventInfo.AddEventHandler添加处理程序。它可能略显繁琐 - 并且会有很多地方可以进行错误处理 - 但它不应该太难。如果您希望能够绑定非公共方法/事件,请不要忘记指定绑定标志。