2009-08-19 13 views
8

Ho un'interfaccia generica, IValidator. Voglio essere in grado di utilizzare StructureMap per recuperare un elenco di tutte le classi che implementano IValidator per un determinato tipo T. Per esempio,Posso usare StructureMap per restituire tutte le implementazioni di un'interfaccia generica per un parametro di tipo specifico

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

so come recuperare tutte le classi che implementano IValidator ma ho bisogno di filtrare dal tipo del parametro type.

Qualcuno può darmi qualche consiglio o suggerimento?

Grazie.

risposta

11

Funzionerà esattamente come il tuo esempio. Devi solo assicurarti che le istanze siano registrate nel container. Un modo è di cercare i tipi:

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

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>(); 
Problemi correlati