2009-08-19 12 views
8

Mam ogólny interfejs, IValidator. Chcę móc używać StructureMap aby pobrać listę wszystkich klas, które implementują IValidator dla danego typu T. Na przykład,Czy mogę użyć StructureMap do zwrócenia wszystkich implementacji interfejsu ogólnego dla określonego parametru typu

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

wiem jak pobrać wszystkie klasy, które implementują IValidator ale muszę ją filtrować według typu parametru typu.

Czy ktoś może udzielić mi wskazówek lub sugestii?

Dzięki.

Odpowiedz

11

Będzie działać dokładnie tak, jak na przykład. Musisz tylko upewnić się, że instancje są zarejestrowane w kontenerze. Jednym ze sposobów jest skanowanie w poszukiwaniu typów:

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

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>(); 
Powiązane problemy