2012-07-13 16 views
6

私は仕様パターンを使用するN層アプリケーションを持っています。さて、クライアントコードに仕様を組み立てるいくつかの方法を提供したいと思います。それは、これらのようないくつかの事前定義されたオプション、である必要があります。標準パターンをクライアントコードに公開する

  • イコール
  • 演算子:GreaterThan
  • が含まれてい

これらのオブジェクト(メソッド任意のロジックを含めることはできません(私はそれらのフィルタを呼びましょう) )、データフィルタタイプとパラメータのみ。また、サーバーで仕様に変換する自然な方法が必要です。 は、ここでは、クライアント側からどのように見えるべきかの例です:

var serviceClient = new DataModuleService(); 
var equalFilter = new ContainsFilter<Book>("Title","Lord of the Rings"); 
var lordOfTheRingBooks = serviceClient.GetBooks(equalFilter); 

も、すべての標準的な操作のためのフィルタタイプが存在しなければならないと結合する方法(、イコール、大、中のような文字列のためのSTARTSWITHなど、間)ブーリアン演算子(and、or not)を使用します。

このようなことを実装するためのいくつかのパターン/標準プラクティスはありますか?


UPD:タスクは今のために凍結され、そして、私はタスクの定義自体に問題があることを考え始めました。

答えて

2

criteria queriesで何をしようとしているのがHibernateのように聞こえますか? combine themしかし、興味のあるフィルタを作成したい場合は

これはC#ではありませんが、Java and C#は似たような言語なので、そこからいくつかのアイデアを借りるかもしれません。

さらに、.NET上のHibernateのポート(NHibernate)のthe same criteria queries(ただし、APIがJavaと同じかどうかはわかりませんが)に行くことができます。

4

ちょうど高レベルの答え - 私はあなたが言及されたすべての論理的条件付き演算子をサポートするLINQ式を試すことができると信じています。利用可能なタイプを確認するには、System.Linq.Expressions名前空間を参照してください。

便利なリンク:

+0

"彼は死んジムです。"リンクは死んでいる –

+1

ありがとう、そのサイトがダウンしているようです。私はより多くのリンクを追加しました – sll

関連する問題