2011-01-14 5 views
1

Expression<Func<MyObject, T>>を返す関数を実現する必要があります。ここで、Tは整数、文字列またはdatetimeです。 呼び出し元はTの型を知らないでしょう。 私が達成したいのは、Linq OrderBy関数で使用できる述語を作成する関数です。 ザ・ようなものでなければなりません:intまたは日付または文字列を返す汎用関数を作成する方法

class FilterCreator { 
    ... 
    Expression<Func<MyObject, T>> getOrderExpression() 
    { 
    ... 
    } 
} 

class Consumer{ 
    void mymethod() 
    { 
     var orderedList = MyList.OrderBy(filterCreator.getOrderExpression()); 
    } 
} 

答えて

1

ジェネリックがそのように動作しません。呼び出し元にTの型を知らせたり、TをObjectに置き換えたりする必要があります。

+0

Tのタイプの許容範囲は、インターフェイスの一部であり、インターフェイスとしてパブリックにする必要があります。 –

+0

しかし、私は依然としてディナミカルに注文述語を生成する方法が必要です。別の方法があれば、どんな提案も歓迎です。私のことはうまくいかないことを知っていただけの例でした。 – themarcuz

+0

getOrderExpressionは何を注文するのかを知っていますか? –

関連する問題