Castle Windsor服务装订组件

时间:2012-11-09 20:10:40

标签: c# dependency-injection assemblies castle-windsor

警告:我是温莎的新手。

我有一个有多个项目的解决方案。我有一个包含所有接口(名为“Framework”)的项目和其他具有这些接口的具体实现的项目。我试图让温莎绑定这些并解决我的界面:

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

我有另一个项目,它具有我为其创建安装程序的实际windsor调用:

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

我将windsor容器实例化为:

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

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

  

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

我还尝试在安装函数中翻转项目以首先加载Orders但我得到同样的错误。

任何可以帮助我的温莎用户?

1 个答案:

答案 0 :(得分:1)

你已经有效地告诉温莎获得所有类型,但你还没有告诉它如何处理它们。如果您不想过滤要注册的类型以及要注册的接口,则需要在注册时添加Pick()方法。

例如......

container.Register(
    Classes.FromAssemblyNamed("Framework").Pick(),
    Classes.FromAssemblyNamed("Orders").Pick()
);