相关
我需要检测事件何时触发。为此,我尝试动态订阅该事件。
问题是我有不同类型的代表,并非所有事件都具有相同的签名。提供的解决方案in here和 here需要 object sender, EventArgs e
,我没有使用它,所以我得到一个异常,告诉我类型不匹配。
以下是我拥有的委托(delegate)的一些示例:
public delegate void OnEventA(int id);
public delegate void OnEventB(double num, string name);
如何创建正确的委托(delegate)?
最佳答案
EventInfo
有一个您可以使用的方法 AddEventHandler
。如果您没有委托(delegate)实例,则可以使用 Delegate.CreateDelegate
动态创建委托(delegate):
var eh = Delegate.CreateDelegate(ei.EventHandlerType, target, methodInfo);
ei.AddEventHandler(owner, eh);
在此示例中,target
是委托(delegate)的目标对象,methodInfo
是 target< 中方法的
对象。最后,MethodInfo
/owner
是事件ei
所属的对象。
关于c# - 如何动态订阅一个事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3772005/