1
如何使用表达式目录树,使拉姆达这样添加事件处理程序和表达式树
Action<EventHandler<TEventArgs>> adder = vs => GenericEvent += vs
。此代码不起作用:
Expression<Func<EventHandler<TEventArgs>>> handler =() => GenericEvent;
var vs = Expression.Parameter(typeof(EventHandler<TEventArgs>), "vs");
var adder = Expression.Lambda<Action<EventHandler<TEventArgs>>>(
Expression.AddAssign(handler.Body, vs), vs).Compile();
错误消息:
的二进制运算符中用addAssign未对该类型 'System.EventHandler
1[ConsoleApplication.Program+SomeEventArgs]' and 'System.EventHandler
1 [ConsoleApplication.Program + SomeEventArgs]' 限定。
那么最终的代码是什么样的? – l33t 2017-04-06 14:29:58
@ l33t:如果没有更清晰的问题,很难写出适当的代码。如果您处于类似的位置,但无法使其工作,请用[mcve]问一个新问题。 – 2017-04-06 14:31:27