1

警告:我对温莎真的很陌生。

我有 1 个包含多个项目的解决方案。我有一个项目,其中包含我们所有的接口(名为“框架”)和其他包含这些接口的具体实现的项目。我试图让 Windsor 绑定这些并像这样解析我的接口:

其他项目之一称为“订单”,它有一个Order实现IOrder在框架项目中定义的类。这两个项目之间有一个引用,它确实可以编译。

我有另一个项目,其中包含我创建的安装程序的实际 Windsor 调用:

public class CoreInstaller : IWindsorInstaller
  {
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(
          AllTypes.FromAssemblyNamed("Framework"),
          AllTypes.FromAssemblyNamed("Orders")
        );
    }
  }

我这样实例化温莎容器:

new WindsorContainer().Install(new CoreInstaller());

当我尝试解决IOrder时,它失败了:

Castle.MicroKernel.ComponentNotFoundException:找不到支持服务 Framework.IOrder 的组件

我也尝试过在安装功能中翻转项目以Orders首先加载,但我得到了同样的错误。

那里有可以帮助我的 Windsor 用户吗?

4

1 回答 1

1

您已经有效地告诉 Windsor 获取所有类型,但您还没有告诉它如何处理它们。如果您不打算过滤要注册的类型以及要注册的接口,则需要将 Pick() 方法添加到您的注册中。

例如...

container.Register(
    Classes.FromAssemblyNamed("Framework").Pick(),
    Classes.FromAssemblyNamed("Orders").Pick()
);
于 2012-11-09T20:35:22.487 回答