Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以使用StructureMap返回特定类型参数的通用接口的所有实现吗_C#_Generics_Structuremap - Fatal编程技术网

C# 我可以使用StructureMap返回特定类型参数的通用接口的所有实现吗

C# 我可以使用StructureMap返回特定类型参数的通用接口的所有实现吗,c#,generics,structuremap,C#,Generics,Structuremap,我有一个通用接口,IValidator。我希望能够使用StructureMap检索实现给定类型T的IValidator的所有类的列表。例如 var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>(); var AddressValidators = ObjectFactory.GetAllInstances<IValidator<Address>>(); v

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

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>();
var AddressValidators = ObjectFactory.GetAllInstances<IValidator<Address>>();
var PersonValidators=ObjectFactory.GetAllInstances();
var AddressValidators=ObjectFactory.GetAllInstances();
我知道如何检索实现IValidator的所有类,但我需要根据类型参数的类型对其进行过滤

有人能给我一些指导或建议吗


谢谢。

它的工作原理与您的示例完全相同。您只需确保实例已注册到容器中。一种方法是扫描类型:

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

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>();
ObjectFactory.Initialize(x=>
{
x、 扫描(扫描=>
{
扫描。卡入总成();
scan.WithDefaultConventions();
scan.AddAllTypesOf();
scan.AddAllTypesOf();
});
});
var PersonValidators=ObjectFactory.GetAllInstances();