首页 > 解决方案 > Castle Windsor 从 2 个不同的程序集和命名空间注册接口和实现

问题描述

我有 2 个类库和 1 个 winform 项目。

具有命名空间的类库项目IViews包含声明的所有接口。具有命名空间的类库项目Views包含在IViews.

现在在 WinForm 项目中,我正在尝试配置 Castle Windsor 注册。请注意,所有这 3 个都是不同的项目、命名空间和程序集。

在注册时,我写了下面的代码。

        WindsorContainer container = new WindsorContainer();

        container.Register(
            Classes.FromAssemblyContaining<IMainView>()
            .InSameNamespaceAs<frmMain>()
            .WithServiceDefaultInterfaces()
        );

当我尝试通过下面的代码行获取 ILimitView 的对象时,我收到如下错误。ILimitView 接口由 frmLimitView 类在与 frmMain 相同的项目、程序集和命名空间中实现。

        container.Resolve<ILimitView>();

抛出异常:Castle.Windsor.dll 中的“Castle.MicroKernel.ComponentNotFoundException”

现在我已经逐行注册了各个接口和实现,但是如果我可以使用包含所有接口和实现的程序集和命名空间来注册它们会很棒。

请您在这里说明一下我的代码出了什么问题,或者提供一个关于如何实现它的示例?

标签: namespacesinversion-of-controlcastle-windsorcastle

解决方案


推荐阅读