2010-11-22 17 views
1

質問があります。 ジェネリック型パラメータを作成するにはどうすればよいですか? 私は式ツリーを構築しようとしていますし、私が構築するために以下の行を持っている:実行時まで知られていないにジェネリック型パラメータの作成方法

var expression = Expression 
       .Lambda<Func<T, bool>>(
        operation, 
        new ParameterExpression[] {parameter}); 

だから、私が、λにTの型パラメータを指定することが期待されている>が、型パラメータT 。

助けてください。 おかげで

答えて

3

さて、あなたは一般的な方法でそれを書くことができます:

public Expression<Func<T,bool>> BuildExpression<T>(...) 
{ 
    // Whatever you need to do 
    var expression = Expression 
      .Lambda<Func<T, bool>>(
       operation, 
       new ParameterExpression[] {parameter}); 
} 

...そして反射によってそのメソッドを呼び出します。また:

を呼び出すことができ、それは、これらのどのだろうについての助言を与えることは非常に難しいです最も適切なアプローチである。詳細を記入するために質問を編集してください。

+0

お返事ありがとうございます。 – Luka

+0

答えをありがとう。私が構築しようとしているのは、ユーザーインターフェイスで作成されたクエリをドメイン内のクエリに変換するユーティリティです。問題は、UIではDTOクラスだけがドメインではないので、linq式(personDTO x)=> x.Nameを(Person x)=> x.Nameに変換する必要があるということです。どういうわけか私はその表現を解析して構築しました。今残っているのは最終ステップです。 Expression.Lambda >。問題は、この型パラメータが実行時に構築されているため、パラメータT - (これは実ドメインオブジェクト、つまり。(Person)の型パラメータ)を知らないことです。 – Luka

+0

@ルカ:それでは、いくつかの*より多くの情報が与えられています。最後のオプションがここに最も適していると思われます。 –

関連する問題