複数の代入を行う動的ラムダ式(テキストから解析)を作成しようとしています。個々の課題を作成するのはかなり簡単でしたが、私はそれらをどのように組み合わせるかについて固執しています。 (Expression.Lambdaのみ入力として一つの発現がかかるので)1つのラムダ式での複数の代入操作
Action<Entity> action = (entity) =>
{
entity.Property1 = "1";
entity.Property2 = "2";
};
が一つに複数のExpression.Assign式を結合する方法はあります:だから私が達成しようとしていることと同じですか?
- 編集: 私が書いたコードは擬似コードなので、タイプミス(修正済み)は何も変わりません。
Expression parameter = Expression.Parameter(typeof(Entity), "param");
Expression firstProperty = Expression.Property(parameter, "Property1");
Expression first = Expression.Assign(firstProperty, "1");
Expression secondProperty = Expression.Property(parameter, "Property2");
Expression second = Expression.Assign(secondProperty, "2");
Expression final = [INSERT MAGIC HERE]
Action<Entity> action = Expression.Lambda<Action<Entity>>(final, entity).Complie();
、それだけでデモの目的のために、プロパティ名は、実際にテキスト入力から来て、assigment式の数が2に限定されるものではないことに注意してください:私が今持っているコードのようなものです。私の質問は、私がassigmentの表現を組み合わせることができる表現があるか、それぞれのラムダを作成しなければならないということですか?
あなたは、第二の割り当ての後にセミコロンが欠落していませんか?とにかく私が知る限り、表現の数には限界がありません。 [MSDN](http://msdn.microsoft.com/en-us/library/bb397687.aspx) –
コンパイルエラーは何ですか? –
説明が更新されました。 Expression.Andを試してみると、コンパイラエラーは発生しません。例えば、正しいですが、Property1 = "1" && Property2 = "2"は無効です。 –