2011-10-27 15 views
5

से सभी ठोस प्रकार प्राप्त करें क्या बाध्यकारी से ठोस प्रकार प्राप्त करने के लिए निंजा के साथ कोई तरीका है? मैं कार्यान्वयन को तुरंत चालू नहीं करना चाहता हूं, बस प्रकार प्राप्त करें।ninject

मैं इस

Type[] concreteTypes = Kernel.GetBindings(typeof(IController)). 
    GetImplementingTypes(); 

मेरे Kernel की तरह कुछ करने के लिए करना चाहते हैं तो बस एक StandardKernel है।

मैं अंततः उन प्रकारों के खिलाफ प्रतिबिंबित करना चाहता हूं।

उत्तर

4

एकमात्र तरीका kernel.GetAll<IController>() का उपयोग करके सभी उदाहरण प्राप्त करना है। Ninject में एक सेट बाध्यकारी मैपिंग नहीं है। कार्यान्वयन निर्धारित किया जाता है जब इंजेक्शन के माध्यम से उदाहरण हल किए जाते हैं या कॉल प्राप्त होते हैं। ऐसा इसलिए है क्योंकि निंजा सशर्त और निहित बाइंडिंग के लिए अनुमति देता है।

आप एक MVC3 आवेदन सेट करते हैं, आप वास्तव में अपने नियंत्रक पंजीकृत नहीं के रूप में Ninject का निर्धारण करेगा जो नियंत्रक लोड करने के लिए और क्या इसे में सुई है। यह आलसी बाध्यकारी बनाकर यह करता है।

निकटतम आप StandardKernel का विस्तार कर सकते हैं और संरक्षित बाध्यकारी सेट तक पहुंच सकते हैं और सभी बाइंडिंग को सशर्त नहीं पाते हैं। एक बार जब आपके पास सभी गैर-सशर्त बाइंडिंग हो जाएं, तो आप बाध्यकारी को अलग करने में सक्षम हो सकते हैं, लेकिन मुझे बिल्कुल याद नहीं है क्योंकि वे StandardProvider कक्षा के पीछे छिपाए जा सकते हैं।

आप क्या कर रहे हैं कि आपको किसी विशेष इंटरफ़ेस के लिए सटीक बाध्यकारी कॉन्फ़िगरेशन जानने की आवश्यकता है?

+0

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

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