2009-08-19 3 views
8

일반 인터페이스 IValidator가 있습니다. 나는 StructureMap을 사용하여 특정 형식 매개 변수에 대한 일반 인터페이스의 모든 구현을 반환 할 수 있습니까?

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

내가 IValidator를 구현하는 모든 클래스를 검색하는 방법을 알고, 예를 들어 주어진 T 형식에 대한 IValidator를 구현하는 모든 클래스의 목록을 검색 StructureMap를 사용할 수 있도록하려면하지만 난 그것을 필터링해야 type 매개 변수의 유형별.

아무도 내게 어떤 안내 또는 제안을 줄 수 있습니까?

감사합니다.

답변

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>>(); 
관련 문제