使用MVC3中的Windsor构造函数注入解析多个服务

时间:2012-02-19 05:53:02

标签: asp.net-mvc castle-windsor

我有一个控制器,它接受一个I​​CustomerService实例。我的一个实现的构造函数(好的,唯一的实现atm)获取了一个ICustomerExporter实例数组。

我正在使用以下代码注册所有ICustomerExporter实现:

_container.Register(AllTypes
    .FromAssembly(typeof(ICustomerExporter).Assembly)
    .BasedOn<ICustomerExporter>().LifestyleSingleton());

我的DefaultCustomerService实现如下:

public DefaultCustomerService(ISession session, ICustomerExporter[] exporters)
{
    this._session = session;
    this._exporters = exporters;
}

但是,当我尝试运行该应用时,出现以下错误:

PM.Services.Implementation.DefaultCustomerService' is waiting for the following  
dependencies: - Service 'PM.Services.ICustomerExporter[]' which was not registered.
很明显,它已经注册,我甚至可以在调试器中停止并在容器的组件列表中验证ExcelCustomerExporter实现在那里。那么为什么我收到此错误消息?

2 个答案:

答案 0 :(得分:1)

看起来您正在注册ICustomerExporter,但我不知道Windsor会假设ICustomerExporter的实现始终满足您的ICustomerExporter []依赖关系。您是否尝试过注册ICustomerExporter []依赖项?

答案 1 :(得分:0)

为了回答任何人的问题,在注册这样的多项服务时,你必须做两件事: