2012-07-13 7 views
6

मेरे पास एक एन-स्तरित एप्लिकेशन है, जहां मैं विशिष्टता पैटर्न का उपयोग करता हूं। अब, मैं क्लाइंट कोड के विनिर्देशों को बनाने के कुछ तरीके प्रदान करना चाहता हूं। यह कई पूर्व निर्धारित विकल्प, इस तरह होना चाहिए:क्लाइंट कोड के लिए विशिष्टता पैटर्न का पर्दाफाश करने के लिए मानक अभ्यास?

  • समान
  • GreaterThan
  • शामिल

इन वस्तुओं को किसी भी तर्क शामिल नहीं करना चाहिए (मुझे उन्हें फिल्टर कॉल) (तरीकों), केवल डेटा - फ़िल्टर प्रकार और पैरामीटर। और उन्हें सर्वर पर विनिर्देश में बदलने के लिए प्राकृतिक तरीका होना चाहिए। यह इस प्रकार से ग्राहक की ओर से दिखना चाहिए उदाहरण है:

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

वहाँ भी सभी मानक संचालन के लिए फिल्टर प्रकार होना चाहिए (, समान, ग्रेटर, में की तरह के बीच, स्ट्रिंग के लिए StartsWith, आदि) और गठबंधन करने के लिए तरीके उन्हें बूलियन ऑपरेटर (और, या नहीं) के साथ।

क्या ऐसी चीजों को लागू करने के लिए कुछ पैटर्न/मानक प्रथाएं हैं?


युपीडी: कार्य अब के लिए जमे हुए है, और मुझे लगता है कि करने के लिए कार्य की परिभाषा अपने आप में समस्या यह है कि शुरू कर दिया है।

उत्तर

2

आप मुझे क्या करने की कोशिश कर रहे हैं Hibernatecriteria queries के साथ कर रहा है। आप combine them कर सकते हैं हालांकि आप उस फ़िल्टर को बनाना चाहते हैं जिसमें आप रुचि रखते हैं।

यह सी # नहीं है, लेकिन Java and C# समान भाषाएं हैं, इसलिए हो सकता है कि आप वहां से कुछ विचार उधार ले सकें।

इसके अतिरिक्त, आप the same criteria queries के लिए .NET (NHibernate) पर हाइबरनेट के पोर्ट के लिए जा सकते हैं (हालांकि मुझे बिल्कुल पता नहीं है कि एपीआई जावा के समान है या नहीं)।

4

बस एक उच्च स्तरीय उत्तर - मेरा मानना ​​है कि आप LINQ अभिव्यक्तियों को आजमा सकते हैं जो आपके द्वारा वर्णित सभी लॉजिकल और सशर्त ऑपरेटर का समर्थन करते हैं। उपलब्ध प्रकार देखने के लिए System.Linq.Expressions नेमस्पेस के माध्यम से दिखता है।

उपयोगी लिंक्स:

+0

कि "वह जिम है।" लिंक मर चुका है –

+1

धन्यवाद, लगता है कि साइट नीचे है। मैंने और लिंक जोड़े हैं – sll

संबंधित मुद्दे