簡體   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