6

मेरे पास एक सामान्य आईरिपॉजिटरी है जिसमें 2 कन्स्ट्रक्टर हैं, इनमें से कोई भी पैरामीटर नहीं है, अन्य में डेटाकॉन्टेक्स्ट पैरामीटर के रूप में है। मैं इस मामले में रास्ते में संरचनाओं को परिभाषित करना चाहता हूं पैरामीटर रहित कन्स्ट्रक्टर का उपयोग करें। मैं एक पैरामीटर रहित निर्माता बनाने के लिए एक तरीका चाहता हूं, जो मैंने देखा है, वे एक नया डेटाैकॉन्टेक्स्ट बनाते हैं और इसे उस कन्स्ट्रक्टर को पास करते हैं जिसमें पैरामीटर होते हैं।एक जेनेरिक रिपोजिटरी में डिफ़ॉल्ट कन्स्ट्रक्टर स्ट्रक्चरमैप को परिभाषित करें

+0

इस मदद आप करता है: आपके मामले में, जब से तुम यह parameterless निर्माता का उपयोग करना चाहते, DefaultConstructorAttribute का उपयोग करें? http://stackoverflow.com/questions/289512/structuremap-how-to-define-default-constructor-by-code – uvita

+0

ऐसा नहीं है कि मैं एक सामान्य भंडार का उपयोग कर रहा हूं! मुझे ऐसा कुछ करने की ज़रूरत है: x.SelectConstructor (IRepository ....... –

+0

यह समझ में नहीं आता है। इंटरफ़ेस में रचनाकार नहीं हैं। –

उत्तर

4

डिफ़ॉल्ट रूप से, स्ट्रक्चर मैप अधिकांश तर्कों के साथ निर्माता का उपयोग करेगा।

[DefaultConstructor] 
public void Repository<T>() { } 

public void Repository<T>(DataContext dataContext) { } 
+0

क्या यह किसी अन्य तरीके से ऐसा करना संभव है? यह आपकी कक्षा में एक अटूट को जोड़ने के लिए एक्सेस/इच्छा के बिना दिखाई देगा, आप इसके लिए एक डिफ़ॉल्ट कन्स्ट्रक्टर निर्दिष्ट नहीं कर सकते सामान्य जेनेरिक प्रकार खोलें क्योंकि आप एक कन्स्ट्रक्टर पूर्व तैयार नहीं कर सकते हैं उनके साथ दमन। – Cargowire

+0

आप अन्य कन्स्ट्रक्टर को स्पष्ट रूप से कॉल करने के लिए स्ट्रक्चर मैप को भी कॉन्फ़िगर कर सकते हैं। अगर मैं कक्षा में प्रश्न को संशोधित नहीं कर सका तो वह दृष्टिकोण है जो मैं लेता हूं। –

+0

लेकिन आप वास्तव में एक खुले जेनेरिक के निर्माता को कॉल नहीं कर सकते हैं उदा। बेसक्लास <टीटी टाइप, टीप्रोपर्टी> आदि क्योंकि आप एक अभिव्यक्ति को संकलित नहीं कर सकते हैं जो उन पैरामीटर को पूरा नहीं करता है। – Cargowire

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