1
我正在爲WinForms應用程序開發基於MVP的GUI架構,並希望使用Autofac跟蹤不同部分。我一直在考慮循環組件的依賴性,並希望在正確的方向上輕輕一推。MVP視圖/演示者註冊
該體系結構基於this後,其中視圖像我一樣被動。該視圖不會提及演示者。該視圖被傳遞給施工主持人。因此,在非DI世界中,你將與你的啓動程序:
var MainView = new MainView();
var mainPresenter = new MainPresenter(mainView, new DataRepository());
Application.Run(mainView);
好了,演示者需要了解視圖實例來完成其工作。我怎樣才能在註冊碼中表達這一點?這是我已經試過:
builder.RegisterType<MainPresenter>().PropertiesAutowired().SingleInstance();
builder.RegisterType<MainView>().As<IMainView>().PropertiesAutowired().SingleInstance();
然後在Program.cs中:
var mainPresenter = Container.Resolve<MainPresenter>();
Application.Run(Container.Resolve<IMainView>() as MainView);
但是這樣一來,我需要記住創建演示實例。不過,我想在註冊表中表示,如果我請求一個IMainView實例,MainPresenter應該啓動。但
任何提示,嘲笑或嘲弄的笑聲怎麼....歡迎
由於設置屬性!我喜歡展示'mainPresenter.View'的想法。我一直盯着解決容器中的View和Presenter的問題。 – Moelgaard
不客氣! –