我希望能够为给定的EventInfo
添加通用事件处理程序。它有可能吗?
用例如下:我有一个对象。对于这个对象的每个事件,我想添加一个执行某些操作的处理程序。通过反射收集对象事件。这样的代码我用来添加处理程序:
var evt = obj.GetType().GetEvent("OnAdd");
var publisher = new EventPublisher();
EventHandler<object> h = publisher.Publish;
evt.AddEventHandler(obj, h);
// later
public class EventPublisher
{
public void Publish(object sender, object payload)
{
}
}
// somewhere in obj
public event EventHandler<int> OnAdd;
但它仅适用于EventHanlder<object>
。例如。 EventHandler<int>
无法转换为EventHandler<object>
。
无论如何,我可以将任何EventHandler
转换为EventHandler<object>
或以其他方式添加事件处理程序吗?