3

Linq Expressions をいじり始めたばかりで、壁にぶつかりました。アクションから式ツリーを作成する必要があります。残念ながら、アクションを式として取得することはできません。これは基本的に私が作業しなければならないものです:

public void Something(Action action){}

変数と値を抽出するには、アクションの本体にアクセスする必要があります。

4

1 に答える 1

4

ActionExpression;ではありません。それは単なるデリゲートです (ある時点で式であった可能性があり、ラムダであった可能性もあり、そうでなかった可能性もあります)。

これを実行可能にするには、次のようにリファクタリングする必要があります。

public void Something(Expression<Action> action) {...}

Actionまた、C# 3.0 / .NET 3.5 ラムダ式は-type 式ではうまく機能しません。あなたが表現できることは非常に限られています。Func-type 式の方がうまく機能します。.NET 4.0 (CTP) では、言語 (C# 4.0) がラムダを介して何を提供するかはまだ明確ではありませんが、ここでより多くの柔軟性があります。

基本的に、 を使用して希望することを (便利に) 実行できるかどうかはわかりませんExpression

于 2008-11-10T15:49:32.723 に答える