2012-07-13 33 views
6

Belirtim desenini kullandığım N katmanlı bir uygulamam var. Şimdi, müşteri koduna spesifikasyonlar oluşturmanın bazı yollarını sunmak istiyorum. Bu gibi önceden tanımlanmış çeşitli seçenekler olmalıdır:standart uygulama?

  • Eşit
  • GreaterThan
  • İçeriyor

Bu nesneler (yöntemler herhangi bir mantık içermemelidir (Onları Filtreler diyelim)), sadece veri - filtre tipi ve parametreleri. Ve bunları sunucuda belirtime dönüştürmek için doğal bir yol olmalı. Burada istemci tarafından nasıl olması gerektiğine ilişkin örnek:

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

da tüm standart operasyonlar için filtre türleri olmalı ve birleştirme yöntemleri (, Equal, Büyükşehir, In gibi dize için startswith vb Arasında) Onları Boole işleçleri ile (ve, veya değil).

Böyle bir şeyi uygulamak için bazı modeller/standart uygulamalar var mı?


UPD: görev şimdilik donmuş ve ben görevin tanımı kendisinde sorun olduğunu düşünmeye başladım.

cevap

2

ürününün criteria queries ile ne yaptığına dair bana sesler vermeye çalışıyorsunuz. combine them, ancak ilgilendiğiniz filtreyi oluşturmak isteyebilirsiniz.

Bu C# değil, Java and C# benzer dillerdir, belki de oradan bazı fikirler ödünç alabilirsiniz. Ayrıca, the same criteria queries için API (NHibernate) üzerinde Hibernate'in bağlantı noktasını (API'nin Java ile aynı olup olmadığını tam olarak bilmeme rağmen) devam edebilirsiniz.

4

Sadece üst düzey bir yanıt - Bahsettiğiniz tüm mantıksal ve koşullu operatörü destekleyen LINQ ifadelerini deneyebileceğinize inanıyorum. Kullanılabilir türleri görmek için System.Linq.Expressions Ad alanına bakar.

Faydalı linkler:

+0

"Öldü Jim." Link –

+1

Öldü, teşekkürler, site kapalı gibi görünüyor. Daha fazla bağlantı ekledim – sll