我正在与反射、泛型、事件处理程序和委托作斗争。我有一个类型是从AsyncCompletedEventArgs派生的。我想用这个类型创建一个通用的EventHandler实例,也是一个委托。之后,我想把这个事件处理程序添加到一个事件中。
谁能帮助我创建事件处理程序和委托使用反射?感谢所有的帮助。
// The type is derived from AsyncCompletedEventArgs
Type[] typeArgs = { soapServiceInfo.GetEntitiesCompletedEventArgsType };
var eventHandlerType = typeof(EventHandler<>);
var constructed = eventHandlerType.MakeGenericType(typeArgs);
// getEntitiesCompleted = (sender, arguments) => { }
// soapServiceInfo.GetEntitiesCompletedEventInfo.AddEventHandler(client, getEntitiesCompleted);
只能为编译时已知的类型创建lambda表达式。
你试图在运行时创建一个lambda表达式;为此,您需要编译一个表达式树。
查看Delegate.CreateDelegate()