windsorコンテナを使用して以下のMVPデザイン(winforms用)を作成するときに巡回依存性の問題に直面しています。依存性注入のためにWindsor castleを使用したMVPパターンでの循環参照の問題
私のプレゼンターがビューとモデルによって異なります。
ConcretePresenter(IView view, IModel model)
{
this.view = view;
this.model = model;
}
私の見解は、プレゼンターによって異なります
ConcreteView(ConcretePresenter presenter)
{
//actual requirement that the presenter use the current instance of the view and a model object
//new presenter(this, new model())
this.presenter = presenter;
}
私は(別の組成物のルートクラスで)ウィンザー城を使用して、すべてのコンポーネントを登録しています以下のようになります。
IWindsorContainer container;
container = new WindsorContainer();
container.Register(Component.For<ConcretePresenter>().ImplementedBy<ConcretePresenter>());
container.Register(Component.For<IModel>().ImplementedBy<ConcreteModel>());
container.Register(Component.For<IView>().ImplementedBy<ConcreteView>());
ビューを解決すると、考えられる解決策は、コンストラクタインジェクションをビューから削除し、プレゼンタを個別に解決することです。 しかし、これは私がやっていない2つの場所でコンテナを使用し、おそらく間違っています。
ConcreteView()
{
container.Resolve<ConcretePresenter>(); //resolving at 2 different points
}
これに対する解決策はありますか? MVP自体に何か間違っているのですか?
重複:http://stackoverflow.com/questions/1783124/castle-ioc-resolving-circular-references – Roubachof