Bru*_*oLM 2 .net c# reflection
有关
我需要检测事件何时被触发.为此,我试图动态订阅事件.
问题是我有不同类型的委托,并非所有事件都有相同的签名.这里和这里提供的解决方案需要object sender, EventArgs e我不使用,所以我得到一个异常,告诉类型不匹配.
以下是我所拥有的代表的一些例子:
public delegate void OnEventA(int id);
public delegate void OnEventB(double num, string name);
Run Code Online (Sandbox Code Playgroud)
如何创建正确的委托?
EventInfo有一个AddEventHandler你可以使用的方法.如果您没有委托实例,则可以使用Delegate.CreateDelegate以下命令动态创建委托:
var eh = Delegate.CreateDelegate(ei.EventHandlerType, target, methodInfo);
ei.AddEventHandler(owner, eh);
Run Code Online (Sandbox Code Playgroud)
在此示例中target是委托的目标对象,并且methodInfo是对象MethodInfo中的方法target.最后,owner是事件ei所属的对象.
| 归档时间: |
|
| 查看次数: |
1929 次 |
| 最近记录: |