式の変換にいくつかの助けを使うことができます。式<Func <TypeIn、TypeOut1 >>から式<Func <TypeIn、TypeOut2 >>への変換
私は、次のようなクラスのメソッドを持っています。
これは、リポジトリのクラスのための一般的なクエリです。私は物事を一般的なものにしておきたいので、TOrderByパラメーターを指定して、プロパティーのタイプが重要でないようにします。しかし、この実施例では、NHibernateはを使用していると私は次のことをやろうとしている:
var query = session.QueryOver<TEntity>().OrderBy(orderBy).Asc;
しかし、THERのOrderByメソッドは、式のパラメータを取ります>と保証TOrderByがないようので、私はコンパイルエラーを取得しますオブジェクトになります。
この変換を行う方法はありますか、それともTOrderByではなくobjectを使用するだけですか?オブジェクトに固執すれば、ValueTypes(例えばDateTime)で注文する能力を失うことはありませんか?
ご協力いただきありがとうございます。
EDIT:nhibernateとエンティティフレームワークの実装を書いているので、このジェネリックはそのままにしておきます。これは、通常のLinq OrderByメソッドを使用するため、EFでは問題ありません。それはちょうどNhibernateの実装にあります。私はこの問題を抱えています
私は間違いかもしれませんが、TOrderByでエラーが発生した場合は、 "where TOrderBy:class"のような制約を追加してみてください。 –
クラスの制約を追加したくない場合は、 DateTimeまたはintまたは他の値型のようなもの –
typeof(TOrderBy)を使用して、参照型と値型の両方で代替ロジックを実行できますか? – Rich