10

我有一个通用接口,IValidator。我希望能够使用 StructureMap 来检索为给定类型 T 实现 IValidator 的所有类的列表。例如,

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

我知道如何检索所有实现 IValidator 的类,但我需要按类型参数的类型对其进行过滤。

谁能给我任何指导或建议?

谢谢。

4

1 回答 1

12

它将与您的示例完全一样。您只需确保实例已在容器中注册。一种方法是扫描类型:

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

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>();
于 2009-10-10T23:09:30.400 回答