繁体   English   中英

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

[英]Using Castle Windsor fluent API to register components implementing multiple interfaces

我正在构建一个POC,以演示是否可以在WinForms应用程序中将Castle Windsor与Model-View-Presenter模式一起使用。

我的设计如下:

public interface IPresenter{...}  
public interface IPresenterOne : IPresenter {...}  
public interface IPresenterN : IPressenter {...}  

public interface IView{...}  
public interface IViewOne : IView {...}  
public interface IViewN : IView {...}

我已经为演示者和视图创建了安装程序,如下所示:

    public class PresentersInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(Classes.FromAssemblyContaining(typeof(PresenterOne))
                .BasedOn<IPresenter>()
                .LifestyleSingleton());
        }
    }


    public class FormsInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(Classes.FromAssemblyNamed("MyViews")
                .BasedOn<IView>()
                .LifestyleSingleton());
        }
    }

现在,我希望能够执行相同的操作,但是每个视图和每个演示者都要分别注册为IView和IPresenter及其特定接口,即PresenterOne类要注册为IPresenterIPresenterOne

我如何使用Castle的流利API来完成此任务,而不必一个个地注册每个组件?

我正在使用Visual Studio 2017和温莎城堡4.0。

谢谢。

经过大量的查询,文档阅读并尝试了API中的每个选项,我终于能够找到答案:

public class FormsInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromAssemblyNamed("MyViews")
            .BasedOn<IView>()
            .WithServiceAllInterfaces()
            .LifestyleSingleton());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM