動的なlinq式を作成する必要があり、多くの例で作業を開始しました。私はいくつかの仕事といくつかの仕事をテストしましたが、そうでないものもありました。この場合、次のようなメソッドを作成します。
public bool Check(int intvar)
{
if ( i > 2 )
return true;
else
return false;
}
今、私は次のように書いています:
LabelTarget returnTarget = Expression.Label("label");
ParameterExpression para = Expression.Parameter(typeof(int), "intvalue");
Expression test = Expression.GreaterThan(para, Expression.Constant(5));
Expression iftrue = Expression.Return(returnTarget, Expression.Constant(true));
Expression iffalse = Expression.Return(returnTarget, Expression.Constant(false));
Expression.IfThenElse(test, iftrue, iffalse);
this.TheExpression = Expression.IfThenElse(test, iftrue, iffalse);
Expression.Lambda<Action<int>>(
this.TheExpression,
new ParameterExpression[] { para }
).Compile()(5);
今それは投げInvalidOperationException
ます:
ラベル「label」`にジャンプできません
なにが問題ですか ?trueまたはfalseを返すだけで済みます。