使用Castle Windsor将具有不同实现的列表的对象作为构造函数参数进行解析

D3athSpank

我有以下构造函数:

public DataImporterService(IList<IDataValidator> dataValidators,     IList<IDataComparer> dataComparers, IList<IDataStorage> dataStorages)
        {
            _dataValidators = dataValidators;
            _dataComparers = dataComparers;
            _dataStorages = dataStorages;
        }

这是我的注册:

Component.For<IDataComparer>().ImplementedBy<PlanOfRecordComparer>().Named("planOfRecordComparer"),
                Component.For<IDataComparer>().ImplementedBy<PlanOfExecutionComparer>().Named("planOfExecutionComparer"),
                 Component.For<IDataComparer>().ImplementedBy<BomComparer>().Named("bomComparer"),
                Component.For<IDataStorage>().ImplementedBy<PlanOfRecordStorage>().Named("planOfRecordStorage"),
                Component.For<IDataStorage>().ImplementedBy<PlanOfExecutionStorage>().Named("planOfExecutionStorage"),
                Component.For<IDataValidator>().ImplementedBy<PlanOfExecutionValidator>().Named("planOfExecutionValidator"),
                Component.For<IDataValidator>().ImplementedBy<PlanOfRecordValidator>().Named("planOfRecordValidator"),
                Component.For<IDataValidator>().ImplementedBy<BomValidator>().Named("bomValidator")

但是是否可以通过另一种方式注册组件而无需指定IDataComparer,IDataValidator和IDataStorage的每个实现?喜欢以更通用的方式?

D3athSpank

好的,这就是我的工作方式:

首先,我使用了一个collectionresolver:

 container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));

要注册实现IDataComparer,的所有类IDataStorageIDataValidator

Classes.FromThisAssembly().Where(x => x.Name.EndsWith("Validator")).WithServiceFirstInterface(),
Classes.FromThisAssembly().Where(x => x.Name.EndsWith("Comparer")).WithServiceFirstInterface(),
Classes.FromThisAssembly().Where(x=>x.Name.EndsWith("Storage")).WithServiceFirstInterface()

然后我就可以解决我的课程了:

public DataImporterService(IDataValidator[] dataValidators, IDataComparer[] dataComparers, IDataStorage[] dataStorages)
        { }

因此,当Castle Windsor尝试对DataImporterService进行解析时,它将获取所有实现注入接口的类,构造一个数组,将它们放入数组中,并将该数组作为依赖项的值提供。

这在此处的文档中提供

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Castle DynamicProxy初始化带有参数的构造函数

来自分类Dev

使用Castle Windsor在WebAPI中进行依赖注入

来自分类Dev

IoC Castle Windsor-没有为此对象定义无参数的构造函数

来自分类Dev

WPF ViewModel中的Castle Windsor构造函数注入

来自分类Dev

如何使用Castle Interceptor检查方法是否具有属性?

来自分类Dev

在约定中使用Castle DynamicProxy和StructureMap 3进行装饰-DecorateAllWith

来自分类Dev

Castle.Windsor可以使用类型和名称来选择构造函数吗?

来自分类Dev

如何使用Bouncy Castle编辑Java中的密码套件列表

来自分类Dev

使用可变对象作为构造函数参数

来自分类Dev

使用Castle Windsor和动态加载的DLL解析控制器

来自分类Dev

在构造函数具有非空参数列表的情况下使用构造函数引用

来自分类Dev

使用Castle-Windsor在MVC4中使用HttpClient的方式

来自分类Dev

Java:使用Bouncy Castle进行PGP加密

来自分类Dev

使用ED25519键和Bouncy Castle(Java)对Json进行签名/验证

来自分类Dev

使用Castle DynamicProxy初始化带有参数的构造函数

来自分类Dev

使用Castle Windsor在WebAPI中进行依赖注入

来自分类Dev

如何指定我希望控制器的构造函数接收的类实例(使用Web API,DI和Castle Windsor时)?

来自分类Dev

使用继承和无接口解析Castle中的通用构造函数参数

来自分类Dev

IoC Castle Windsor-没有为此对象定义无参数的构造函数

来自分类Dev

在Windows窗体应用程序中使用Castle Windsor

来自分类Dev

具有构造函数参数的Castle Windsor安装程序

来自分类Dev

Castle Windsor-使用相同的通用工厂方法注册多个接口

来自分类Dev

使用Castle.DynamicProxy和Simple Injector进行基于属性的拦截

来自分类Dev

Castle.Windsor使用Dapper实例化错误版本的SqlConnection

来自分类Dev

使用 Castle Windsor 在服务类的构造函数中使用参数化构造函数初始化类

来自分类Dev

如何使用 Castle Windsor 创建客户端版本 > 3.0.3660 的 RavenDB 会话?

来自分类Dev

使用 xml/app.config 在 Castle Windsor 中添加字符串列表

来自分类Dev

使用 Castle Windsor fluent API 注册实现多个接口的组件

来自分类Dev

使用 Castle Windsor 在 QueryBus 中查找查询处理程序

Related 相关文章

  1. 1

    使用Castle DynamicProxy初始化带有参数的构造函数

  2. 2

    使用Castle Windsor在WebAPI中进行依赖注入

  3. 3

    IoC Castle Windsor-没有为此对象定义无参数的构造函数

  4. 4

    WPF ViewModel中的Castle Windsor构造函数注入

  5. 5

    如何使用Castle Interceptor检查方法是否具有属性?

  6. 6

    在约定中使用Castle DynamicProxy和StructureMap 3进行装饰-DecorateAllWith

  7. 7

    Castle.Windsor可以使用类型和名称来选择构造函数吗?

  8. 8

    如何使用Bouncy Castle编辑Java中的密码套件列表

  9. 9

    使用可变对象作为构造函数参数

  10. 10

    使用Castle Windsor和动态加载的DLL解析控制器

  11. 11

    在构造函数具有非空参数列表的情况下使用构造函数引用

  12. 12

    使用Castle-Windsor在MVC4中使用HttpClient的方式

  13. 13

    Java:使用Bouncy Castle进行PGP加密

  14. 14

    使用ED25519键和Bouncy Castle(Java)对Json进行签名/验证

  15. 15

    使用Castle DynamicProxy初始化带有参数的构造函数

  16. 16

    使用Castle Windsor在WebAPI中进行依赖注入

  17. 17

    如何指定我希望控制器的构造函数接收的类实例(使用Web API,DI和Castle Windsor时)?

  18. 18

    使用继承和无接口解析Castle中的通用构造函数参数

  19. 19

    IoC Castle Windsor-没有为此对象定义无参数的构造函数

  20. 20

    在Windows窗体应用程序中使用Castle Windsor

  21. 21

    具有构造函数参数的Castle Windsor安装程序

  22. 22

    Castle Windsor-使用相同的通用工厂方法注册多个接口

  23. 23

    使用Castle.DynamicProxy和Simple Injector进行基于属性的拦截

  24. 24

    Castle.Windsor使用Dapper实例化错误版本的SqlConnection

  25. 25

    使用 Castle Windsor 在服务类的构造函数中使用参数化构造函数初始化类

  26. 26

    如何使用 Castle Windsor 创建客户端版本 > 3.0.3660 的 RavenDB 会话?

  27. 27

    使用 xml/app.config 在 Castle Windsor 中添加字符串列表

  28. 28

    使用 Castle Windsor fluent API 注册实现多个接口的组件

  29. 29

    使用 Castle Windsor 在 QueryBus 中查找查询处理程序

热门标签

归档