0

共通のリポジトリ インターフェイスを実装するクラスがいくつかあります。これらのクラスのメソッドの 1 つは、Paged Result を返し、

Expression<Func<T, bool>> OrderBy

リポジトリ クラスを使用するサービス レイヤーも作成しました。UI からサービス レイヤーに Expression オブジェクトを送信することは好ましくないことを読んだので、次を含む文字列として送信する場合は、パラメーターとして送信することにしました。パラメータの名前文字列を変換して式オブジェクトで使用するプロパティとして使用するにはどうすればよいですか。たとえば、User というエンティティがあり、"UserName" というパラメータをメソッドに送信するとします。 「UserName」は、Expression> OrderBy オブジェクトで使用できる「UserName」プロパティに変わりますか?

可能であれば、ソートを行うためのより適切な方法を教えてください。

4

1 に答える 1

0

Expression<Func<T, bool>>サービスを受け取る代わりに、Func<IQueryable<T>, IQueryable<T>>どちらがより柔軟で ​​(場所だけでなく任意の LINQ を有効にする) 受け取ることができ、式が行う追加の作業を必要としません。

誤用 (コード インジェクションなど) を防ぎたい場合は、代わりに enum (または文字列) (sortby パラメーターを含む) をサービスに渡し、それに応じてサービスにクエリを作成させます。

UI によって実際の UI を参照するのではなく、VM またはコントローラーを参照し、ビューがその下にあるものを認識しないことを願っています。

于 2012-06-18T23:08:26.487 に答える