我有一个像这样的字符串:
string myEventName = "myButton_Click";
然后我需要为点击某个按钮创建一个EventHandlers,但是将String作为参数传递,“myButton_Click”方法已经存在:
private void myButton_Click (object sender, RoutedEventArgs e) { }
这是可能的,使用反射或其他类型的技巧吗?
感谢。
答案 0 :(得分:1)
是的,你可以使用反射。它相当丑陋,但应该有效:
// Here, "target" is the instance you want to use when calling
// myButton_Click, and "button" is the button you want to
// attach the handler to.
Type type = target.GetType();
MethodInfo method = type.GetMethod(myEventName,
BindingFlags.Instance | BindingFlags.NonPublic);
EventHandler handler = (EventHandler) Delegate.CreateInstance(
typeof(EventHandler), target, method);
button.Click += handler;
当然,您需要进行大量错误检查,但这是基本步骤。顺便说一下,你的变量最好被命名为“myHandlerName”或类似的东西 - 它不是事件本身。
答案 1 :(得分:0)
您可以使用反射来完成此操作。看看这两个链接,为您提供所需的一切: