Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态添加事件处理程序,使委托名称位于字符串中_C#_Reflection_.net 3.5_Event Handling - Fatal编程技术网

C# 动态添加事件处理程序,使委托名称位于字符串中

C# 动态添加事件处理程序,使委托名称位于字符串中,c#,reflection,.net-3.5,event-handling,C#,Reflection,.net 3.5,Event Handling,我需要通过以下方式将eventHandler分配给对象: _Element.AddHandler(UIElement.MouseLeftButtonUpEvent, new RoutedEventHandler(Vars.Digit), true); 但是,事实上,我在Vars对象实例中只有一个包含“Digit”或其他方法名的字符串 是否可以使用反射或其他技巧来实现这一点 谢谢。是的,您可以使用查找方法,使用查找事件,然后使用添加处理程序。它可能有点复杂,并且有很多地方可以放置错误处

我需要通过以下方式将eventHandler分配给对象:

_Element.AddHandler(UIElement.MouseLeftButtonUpEvent, 
    new RoutedEventHandler(Vars.Digit), true);
但是,事实上,我在Vars对象实例中只有一个包含“Digit”或其他方法名的字符串

是否可以使用反射或其他技巧来实现这一点


谢谢。

是的,您可以使用查找方法,使用查找事件,然后使用添加处理程序。它可能有点复杂,并且有很多地方可以放置错误处理,但它不应该太难。如果希望能够绑定非公共方法/事件,请不要忘记指定绑定标志。

谢谢,但是有了对象的实例(代码段中的变量),我如何告诉_Element.AddHandler指向此特定对象的名为“Digit”的方法?再次感谢Jon。使用
Vars.GetType()
获取包含要为其添加处理程序的方法的类型,并使用
\u Element.GetType()
查找包含事件的类型
AddEventHandler
获取一个对象,该对象是代理的“目标”-在您的情况下,这将是
Vars