LJW*_*LJW 7 c# lambda expression-trees
我在运行时创建了一个lambda表达式,想要评估它 - 我该怎么做?我只想自己运行表达式,而不是反对任何集合或其他值.
在这个阶段,一旦它被创建,我可以看到它是类型Expression<Func<bool>>,值为{() => "MyValue".StartsWith("MyV")}.
我想在那一点上我可以var result = Expression.Invoke(expr, null);反对它,我会得到我的布尔结果.但这只是返回一个InvocationExpression,在调试器中看起来像{Invoke(() => "MyValue".StartsWith("MyV"))}.
我很确定我很接近,但无法弄清楚如何得到我的结果!
谢谢.
And*_*are 15
尝试使用该Compile方法编译表达式,然后调用返回的委托:
using System;
using System.Linq.Expressions;
class Example
{
static void Main()
{
Expression<Func<Boolean>> expression
= () => "MyValue".StartsWith("MyV");
Func<Boolean> func = expression.Compile();
Boolean result = func();
}
}
Run Code Online (Sandbox Code Playgroud)