相关疑难解决方法(0)

表达式树和调用委托

所以我有一个delegate指向我在第一次创建delegate对象时实际上并不知道的功能.稍后将该对象设置为某个功能.

然后我还想创建一个表达式树,用参数调用委托(为了这个问题,参数可以是5).这是我正在努力的一点点; 下面的代码显示了我想要的内容,但它没有编译.

Func<int, int> func = null;
Expression expr = Expression.Invoke(func, Expression.Constant(5));
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我可以这样做(这是实用的,因为我需要在运行时构建表达式树):

Func<int, int> func = null;
Expression<Func<int>> expr = () => func(5);
Run Code Online (Sandbox Code Playgroud)

这使得expr成为:

() => Invoke(value(Test.Program+<>c__DisplayClass0).func, 5)
Run Code Online (Sandbox Code Playgroud)

这似乎意味着要使用delegate func,我需要产生value(Test.Program+<>c__DisplayClass0).func一点.

那么,我怎样才能创建一个调用委托的表达式树?

.net c# lambda delegates expression-trees

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1

delegates ×1

expression-trees ×1

lambda ×1