通过反射动态注册事件实现:
var eventInfo = cameras.ElementAt(i).Value.GetType().GetEvent("ImageAcquired");
MethodInfo mi = this.GetType().GetMethod("camera_ImageAcquired" + (i + 1).ToString());
var @delegate = Delegate.CreateDelegate(eventInfo.EventHandlerType, this, mi);
eventInfo.AddEventHandler(cameras.ElementAt(i).Value, @delegate);
网上参考方法:
public void AddHandler<T>(T instance, string eventName)
{
var eventInfo = instance.GetType().GetEvent(eventName);
var methodInfo = GetType().GetMethod(nameof(Walterlv_BlogPublished));
var @delegate = Delegate.CreateDelegate(eventInfo.EventHandlerType, this, methodInfo);
eventInfo.AddEventHandler(instance, @delegate);
}