Linq Expressions をいじり始めたばかりで、壁にぶつかりました。アクションから式ツリーを作成する必要があります。残念ながら、アクションを式として取得することはできません。これは基本的に私が作業しなければならないものです:
public void Something(Action action){}
変数と値を抽出するには、アクションの本体にアクセスする必要があります。
Action
はExpression
;ではありません。それは単なるデリゲートです (ある時点で式であった可能性があり、ラムダであった可能性もあり、そうでなかった可能性もあります)。
これを実行可能にするには、次のようにリファクタリングする必要があります。
public void Something(Expression<Action> action) {...}
Action
また、C# 3.0 / .NET 3.5 ラムダ式は-type 式ではうまく機能しません。あなたが表現できることは非常に限られています。Func
-type 式の方がうまく機能します。.NET 4.0 (CTP) では、言語 (C# 4.0) がラムダを介して何を提供するかはまだ明確ではありませんが、ここでより多くの柔軟性があります。
基本的に、 を使用して希望することを (便利に) 実行できるかどうかはわかりませんExpression
。