2009-09-08 17 views
5

मैं एन इंजेक्ट के साथ एक संदेश ब्रोकर का निर्माण कर रहा हूं, और मुझे कंटेनर को लागू करने वाले कंटेनर में सभी उदाहरणों को ढूंढना होगा, एक इंटरफ़ेस जो कक्षा को किसी विशेष संदेश प्रकार का उपभोग करने में सक्षम होने के रूप में चिह्नित करता है।NInject में Container.GetAllInstances <T> के बराबर क्या है?

क्या यह परिदृश्य समर्थित है? नैट से

उत्तर

5

उत्तर:

बहु संकल्प (GetAll के माध्यम से) वर्तमान में बहुरूपी नहीं है। इसका अर्थ है कि यह केवल आपके द्वारा निर्दिष्ट सटीक इंटरफ़ेस से बाइंडिंग पर विचार करेगा। आप ऐसा करते हैं:

kernel.Bind<IWorker>().To<WorkerA>(); 
kernel.Bind<IWorker>().To<WorkerB>(); 
kernel.Bind<IWorker>().To<WorkerC>(); 

और फिर:

यह 3 आइटम वापस आ जाएगी। हालांकि, यहां तक ​​ अगर IWorkerA, IWorkerB, और IWorkerCIWorker लागू, Ninject IWorkerAWorkerA करने से बाइंडिंग पर ध्यान नहीं देंगे, जब आप IWorker के लिए पूछना।

देखें:

http://groups.google.com/group/ninject/browse_thread/thread/7b6afa06099bc97a#

1

आप यदि आप के रूप में धागा कि Romain's answer द्वारा संदर्भित है में चर्चा बहुरूपी स्थिति नहीं है, तो आप किसी भी मुद्दे जब तक नहीं होना चाहिए आप Ninject 2. Ninject 1.x का उपयोग कर रहे हैं इस तरह के समर्थन शामिल नहीं था।

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