6

複雑な検索文字列 (実際には、JSON の n レベル オブジェクト グラフ) を受け取り、いくつかの結果を返す検索ツールがあります。LINQ のようなメカニズムを介して、他の (内部) 開発者に機能を公開したいと考えています。

各結果がクラスによって定義されていると仮定しますResult

次のようなメソッドを作成できます。

Function Search(Expression As Linq.Expression(Of System.Func(Of Result, Boolean))) As IEnumerable(Of Result)

私がはっきりしていないのは、そのExpressionパラメーターをどのように調べて、クエリを実行するためのオブジェクト グラフに形成できる実際の条件を抽出するかということです。

誰かがこれを達成する方法のチュートリアル/例を教えてもらえますか?

ちょっとした背景として、再帰構造を取得するのに十分なほど式を掘り下げ、ラムダ式を調べることができましたが、たとえば type を使用して Node のandプロパティ.Bodyを処理したい場合は、問題があります。デバッガーは Friend スコープのクラス ( ) を使用して、使用できない式を調べているため、明らかに間違ったルートに向かっています。LeftRightExpressionType.OrBinaryExpressionProxy

4

2 に答える 2

7

ExpressionVisitorクラスのサブクラス化を検討することをお勧めします。これにより、式ツリーをたどるメカニズムが提供され、各タイプのノードを処理するメソッドをオーバーライドできます。

参考になるその他のリンクを次に示します。

于 2012-08-29T15:41:25.627 に答える