WinFormsアプリケーション用のMVPベースのGUIアーキテクチャに取り組んでおり、Autofacを使用してさまざまな部分を追跡したいと考えています。私は循環コンポーネントの依存関係に遭遇し続けており、正しい方向に穏やかにプッシュしていただければ幸いです。
アーキテクチャはこの投稿に基づいており、ビューは私が得るのと同じくらい受動的です。ビューには、プレゼンターへの参照はありません。ビューは、構築時にプレゼンターに渡されます。したがって、非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);
ただし、この方法では、Presenterインスタンスを作成することを忘れないでください。ただし、登録で、IMainViewインスタンスを要求した場合、MainPresenterを実行に移す必要があることを表明したいと思います。しかし、どのように....
ヒント、嘲笑、または嘲笑は大歓迎です