2012-10-25 17 views
7

मैं देख सकता हूं कि पहले से ही इसी तरह के प्रश्न पूछे गए हैं, लेकिन डीआई और पूरी तरह से नए होने के नाते। मैं पूरे समाधान को समझने में सक्षम नहीं हूं या सही स्रोत नहीं मिला है ....विधानसभाओं में निनजेक्ट का उपयोग कैसे करें

  • मेरे पास वेबएपीआई, बीएल, डीएल असेंबली हैं।
  • वेबएपीआई बीएल पर निर्भर है,
  • बीएल डीएल पर निर्भर है,
  • वेबएपीआई को संदर्भित नहीं करती डीएल और मैं इसे एक ही रखना चाहते हैं। कुछ और असेंबली हैं लेकिन यह मुद्दों को स्पष्ट करने के लिए पर्याप्त है।

वेबएपीआई में एप्लिकेशन प्रारंभ खंड है इसलिए मैं इसे निनजेक कर्नेल प्रारंभ करने और वेबएपीआई परियोजना के लिए निर्भरता पंजीकृत करने के लिए उपयोग कर सकता हूं।

मैं बीएल और अन्य असेंबली के लिए इसे कैसे प्राप्त कर सकता हूं?

उत्तर

3

अलग अलग तरीकों की एक जोड़ी रहे हैं, तो आप Ninject Conventions स्वतः एक कार्यान्वयन एक ही नाम है कि के लिए हर ISomething को हल करने का उपयोग कर सकते हैं (जैसे IThing ->Thing) या आप प्रत्येक विधानसभा जो निर्भरता पंजीकृत करता है में एक Ninject Module बना सकते हैं (आपके बीएल में मॉड्यूल आपके डीएल में मॉड्यूल लोड कर सकता है)।

आपके द्वारा उठाए जाने वाले दृष्टिकोण पर निर्भर करेगा कि आपको अलग-अलग ऑब्जेक्ट्स के लिए अलग-अलग क्षेत्रों को परिभाषित करने की आवश्यकता है, उदाहरण के लिए यदि आप चाहते हैं कि कुछ चीजें सिंगलेट्स के रूप में हल हों जो आपके द्वारा उपयोग की जाने वाली विधि को प्रभावित कर सकती हैं।

+0

धन्यवाद ट्रेवर, मैं अवधारणा को समझता हूं लेकिन यह नहीं जानता कि बीएल असेंबली में तर्क को कैसे और कहाँ कार्यान्वित किया जाए। – user1767363

+0

क्या आप उदाहरण दे सकते हैं कि प्रत्येक मॉड्यूल निनेल के लिए कर्नेल को कैसे सेट करता है? मैं यह जानने की कोशिश कर रहा हूं कि इस समस्या को कैसे हल किया जाए। – Wavel

+0

@Wavel - मैंने उत्तर के लिंक जोड़े हैं। –

0

मुझे लगता है कि Mark Seemann's advice about this बहुत अच्छा है - अपने आवेदन की उच्चतम संभव परत पर एक संरचना रूट बनाएं। वेब ऐप्स के लिए, इसका मतलब Globals.asax फ़ाइल में है। मैं इसके लिए अच्छे कारणों पर विस्तार कर सकता हूं, लेकिन लिंक किया गया ब्लॉग पोस्ट बेहतर काम करता है।

यह उस परत को तोड़ देता है जिसे आप प्राप्त करने की कोशिश कर रहे हैं, लेकिन केवल मुश्किल से, और जो मुझे लगता है वह एक उचित तरीका है। यदि आपकी वेब परत उचित रूप से पतली है (यानी, आप इसे मोटी क्लाइंट के साथ आसानी से बदल सकते हैं) तो यह एक बड़ा नुकसान नहीं है। यदि आप वास्तव में इसके विपरीत हैं, तो आप डीएल के लिए बीएल में एक रचना रूट बना सकते हैं।

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