我有一个通用接口(interface),IValidator。我希望能够使用StructureMap检索为给定类型T实现IValidator的所有类的列表。例如,
var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>();
var AddressValidators = ObjectFactory.GetAllInstances<IValidator<Address>>();
我知道如何检索实现IValidator的所有类,但是我需要按type参数的类型对其进行过滤。
谁能给我任何指导或建议?
谢谢。
最佳答案
它将完全像您的示例一样工作。您只需要确保实例已在容器中注册。一种方法是扫描类型:
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.AddAllTypesOf<IValidator<Person>>();
scan.AddAllTypesOf<IValidator<Address>>();
});
});
var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>();