仕様パターンを使用する N 層アプリケーションがあります。ここで、仕様をクライアント コードに構築する方法をいくつか提供したいと思います。次のように、いくつかの事前定義されたオプションである必要があります。
- 同等
- より大きい
- 含む
これらのオブジェクト (フィルターと呼びましょう) には、ロジック (メソッド) を含めてはならず、データ (フィルターの種類とパラメーター) のみを含める必要があります。そして、それらをサーバーで仕様に変換する自然な方法が必要です。クライアント側からどのように見えるかの例を次に示します。
var serviceClient = new DataModuleService();
var equalFilter = new ContainsFilter<Book>("Title","Lord of the Rings");
var lordOfTheRingBooks = serviceClient.GetBooks(equalFilter);
すべての標準演算 (Equal、Greater、In、Between、文字列の StartsWith など) のフィルター タイプと、それらをブール演算子 (and、or、not) と組み合わせる方法も必要です。
そのようなことを実装するためのパターン/標準的な慣行はありますか?
UPD:タスクは今のところ凍結されており、タスクの定義自体に問題があると思い始めました。