2008-08-26 10 views
11

私は表現木の概念を完全に理解していますが、それらが有用な状況を見つけようとしています。式ツリーを適用できる特定のインスタンスはありますか?それとも、コードのトランスポートメカニズムとしてのみ役立つのでしょうか?私はここで何かを逃しているように感じる。ありがとう!表現木が役に立ついくつかの例は何ですか?

答えて

6

それともコードのためのトランスポート・メカニズムとしてのみ有用であるだろうか?

コードの実行メカニズムとしては役に立ちます。このコードはです。 interpreter patternを使用すると、表現木を直接解釈することができます。これは非常に簡単で実装が速いので便利です。このような通訳はどこにでもあり、何かを「解釈」していないような場合でも使用されます。ネストされた構造体を印刷する。

6

いくつかの単体テスト・モッキング・フレームワークは、強く型付けされた期待値/検証を設定するために、式ツリーを使用します。つまり、式は実際には実行されませんが、式自体が興味深い情報を保持します。式ツリーのない代替は

myMock.Verify("SomeMethod", someObject) // we've lost the strong typing 
4

式ツリーは、関数ロジックにアクセスして何らかの方法で変更または再適用する必要がある場合に便利です。 SQLへ

LINQのが良い例です:

//a linq to sql statement 
var recs (
    from rec in LinqDataContext.Table 
    where rec.IntField > 5 
    select rec); 

我々は式ツリーを持っていなかった場合は、この文は、すべてのレコードを返し、その後、それぞれにC#のロジックを適用する必要があります。

--SQL statment executed 
select * 
from [table] 
where [table].[IntField] > 5 
where rec.IntField > 5はSQLに解析することができ、式ツリーで

関連する問題