我在反射、泛型、事件处理程序和委托(delegate)方面苦苦挣扎。我有一个派生自 AsyncCompletedEventArgs 的类型。我想用这个 Type 和一个委托(delegate)创建一个通用的 EventHandler 实例。之后我想将此事件处理程序添加到事件中。
谁能帮助我使用反射创建事件处理程序和委托(delegate)?感谢所有帮助。
// 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 表达式;为此,您需要编译一个表达式树。
关于c# - 反射、泛型、事件处理程序和委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7554439/