2011-04-13 17 views
9

मेरे पास एक प्लगइन सिस्टम है जो उपयोगकर्ता को प्लगइन का प्रकार चुनने की अनुमति देता है जिसे वे बनाना चाहते हैं (मूल रूप से यह प्लगइन उदाहरण के लिए कॉन्फ़िगरेशन सेट करता है)।संरचना मैप पंजीकृत प्रकार प्राप्त करें, उदाहरण

वे एक चयन सूची से प्लगइन प्रकार का चयन करें। मैं अपने एमवीसी नियंत्रक में एक आईनेमरेबल इंजेक्ट करने के लिए स्ट्रक्चर मैप का उपयोग कर रहा हूं ताकि मैं चुनिंदा सूची में उपयोग करने के लिए एफक्यू प्रकार का नाम एक्सेस कर सकूं।

यह ठीक काम करता है लेकिन मुझे वास्तव में यह पसंद नहीं है कि मुझे सभी पंजीकृत प्लगइन का एक उदाहरण चुनने के लिए सिर्फ एक चयनित सूची में एक सूची प्रदर्शित करना है।

तो सवाल यह है कि, क्या मैं पंजीकृत संरचना के साथ IPlugin के प्रकारों तक पहुंच सकता हूं?

उत्तर

13

आप कंटेनर के मॉडल संपत्ति का उपयोग करके उदाहरण जानकारी पाने के लिए सक्षम होना चाहिए:

IContainer container = ObjectFactory.Container; 
IEnumerable<InstanceRef> instances = container.Model.AllInstances. 
    Where(i => i.PluginType.Equals(typeof(IPlugin))); 

आप का उपयोग कंक्रीट प्रकार का उपयोग कर सकते हैं:

foreach(var instanceRef in instances) 
    Console.WriteLine(instanceRef.ConcreteType); 
+0

यही काम किया। धन्यवाद। –

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