反思,泛型,事件处理程序和委托问题

时间:2011-09-26 11:34:16

标签: c# generics reflection delegates event-handling

我正在与反思,泛型,事件处理程序和代表进行斗争。我有一个派生自AsyncCompletedEventArgs的Type。我想用这个Type创建一个通用的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);

2 个答案:

答案 0 :(得分:1)

您只能为编译时已知的类型创建lambda表达式。

您正在尝试在运行时创建lambda表达式;要做到这一点,你需要编译一个表达式树。

答案 1 :(得分:0)