我正在构建一个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。
谢谢。
答案 0 :(得分:0)
经过大量的搜索,文档阅读并尝试了API中的每个选项,我终于找到了答案:
public class FormsInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromAssemblyNamed("MyViews")
.BasedOn<IView>()
.WithServiceAllInterfaces()
.LifestyleSingleton());
}
}