[英]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類要注冊為IPresenter和IPresenterOne 。
我如何使用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.