2009-08-19 16 views
8

के लिए जेनेरिक इंटरफ़ेस के सभी कार्यान्वयन को वापस करने के लिए स्ट्रक्चर मैप का उपयोग कर सकता हूं मेरे पास एक सामान्य इंटरफ़ेस, IValidator है। मैं StructureMap उपयोग करने के लिए सभी वर्गों है कि उदाहरण के लिए एक दिया प्रकार टी के लिए IValidator लागू की सूची प्राप्त करने के लिए सक्षम होना चाहते हैं,क्या मैं विशिष्ट प्रकार पैरामीटर

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>(); 
var AddressValidators = ObjectFactory.GetAllInstances<IValidator<Address>>(); 

मुझे पता है कि सभी वर्गों कि IValidator लागू पुनः प्राप्त करने लेकिन मैं यह फिल्टर करने के लिए की जरूरत है प्रकार पैरामीटर के प्रकार से।

क्या कोई मुझे कोई मार्गदर्शन या सुझाव दे सकता है?

धन्यवाद।

उत्तर

11

यह आपके उदाहरण की तरह काम करेगा। आपको बस यह सुनिश्चित करना होगा कि कंटेनर के साथ उदाहरण पंजीकृत हैं। एक तरीका है प्रकारों को स्कैन करना:

ObjectFactory.Initialize(x => 
{ 
    x.Scan(scan => 
    { 
     scan.TheCallingAssembly(); 
     scan.WithDefaultConventions(); 
     scan.AddAllTypesOf<IValidator<Person>>(); 
     scan.AddAllTypesOf<IValidator<Address>>(); 
    }); 
}); 

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>(); 
संबंधित मुद्दे