मैं एक सेवा के कई कार्यान्वयन बाध्य करने के लिए चाहते हैं और एक ही बार में कहा जाता है उन सभी को है:Ninject मल्टीकास्टिंग
var kernel = new StandardKernel();
kernel.Bind<IBreakfast>.To<Spam>();
kernel.Bind<IBreakfast>.To<Eggs>();
kernel.Bind<IBreakfast>.To<MoreSpam>();
kernel.Get<IBreakfast>().Eat(); // call Eat method on all three bound implementations
Ninject उस तरह नहीं है, और कई बाइंडिंग होने के बारे में एक अपवाद फेंक देते हैं। क्या कोई तरीका है कि मैं उस त्रुटि के आसपास हो सकता हूं, और सभी कार्यान्वयन कहलाता है?
इसके अलावा, Bind<>
कॉल विभिन्न परियोजनाओं में हो सकती है जो रन-टाइम पर लोड हो सकती हैं या नहीं, इसलिए उन्हें कॉल करने के लिए एक ही कार्यान्वयन करना काम नहीं करेगा। यह एएसपी.नेट एमवीसी 3 वेबसाइट के लिए प्लग-इन आर्किटेक्चर का हिस्सा है।
मैं जब मैं काम करने के लिए मिलता है सुबह में यह कोशिश करता हूँ, लेकिन Ninject 'बाइंड <> (करने के लिए दूसरी कॉल पर एक त्रुटि फेंक नहीं होगा) करें.अभियान <>() '? – MikeWyatt
@ माइकवाइट: नहीं, एकाधिक 'बाइंड ठीक हैं। क्या ठीक नहीं है '' प्राप्त करें जो 'सिंगल 'आइटम से अधिक पैदा करता है। यदि आप ऐसा करना चाहते हैं, तो आप 'GetAll ' का उपयोग कर सकते हैं (या 'सूची ', 'टी []' या 'IEnumerable ' सुझाए गए अनुसार एकाधिक पंजीकरणों के निहित बैचिंग का उपयोग कर सकते हैं) (और जो लोग पोस्ट/कोड करते हैं क्योंकि परीक्षण कभी भी ऐसी चीजें पोस्ट नहीं करते हैं जो उड़ाते हैं!)। ध्यान दें कि निनजेक्ट में आपकी इच्छा के अनुसार कॉल को मल्टीकास्ट करने के लिए एक अंतर्निहित समग्र उत्पन्न करने के लिए कोई अधिकता नहीं है। –
यह बहुत अच्छा काम करता है। धन्यवाद। – MikeWyatt