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

标签 c# generics structuremap

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

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

我知道如何检索所有实现 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>>();

关于c# - 我可以使用 StructureMap 返回特定类型参数的通用接口(interface)的所有实现吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302771/

相关文章:

java - 在 Java 接口(interface)中声明参数子类型,在 Java 实现方法中使用子类型

structuremap - 哪个 Structuremap 生命周期是最佳实践? (v2.5.4)

c# - 我想使用 LoadAsync 和 MemoryStream 将数据库中的图像加载到图片框中

c# - C# dotnet core 2.0 的 AOP,在方法体运行之前访问方法参数值

类公共(public)静态成员的 C# 别名?

c# - 图像在 Win8/Win10 中呈现,但在 Win7 中不呈现

c# - 将泛型类型参数限制为 System.Enum

java - 根据值对 map 进行排序的通用方法

structuremap - 拦截方法调用以增加功能的最简单方法是什么?

c# - 如何清除StructureMap缓存?