1

概念実証webformsmvpサイトを構築しています。プレゼンターを作成するときに、Ninject(v3.0)を使用してサービス(およびその他の)の依存関係を解決したいと思います。これが私のPresenterコンストラクターの例です:

public ParticipantPresenter(IParticipantDisplayView view, IParticipantService participantService) : base(view)

したがって、カスタムIPresenterFactoryを使用してNinjectにIParticipantServiceの実装を解決させたいと思います。

参考までに、実装する必要のあるIPresenterFactoryインターフェイスのメソッドのシグネチャは次のとおりです。

IPresenter Create(Type presenterType, Type viewType, IView viewInstance); 

質問があります; IPresenterFactory実装を実装して登録する場合、PresenterコンストラクターのView引数を解決する責任がありますか?webformsmvpフレームワークがこれを処理しませんか、またはカスタムファクトリ実装を提供することを選択したので、ビューを解決する責任を負いますか?

PS webformsmvp contribプロジェクトに実装があることに気づきましたが、これはNinjectv2用です。Ninject3のコードを書き直すことを検討してきました。しかし、これは私が質問に答えるのに役立ちません。

4

1 に答える 1

1

遊んだ後、独自のIPresenterFactoryを実装した場合、ビューを解決する責任がないことがわかりました。署名を見る(上記と同じ):

IPresenter Create(Type presenterType, Type viewType, IView viewInstance);

viewInstanceには、webformsmvpフレームワークによって解決されたビューのインスタンスが含まれます。ファクトリ実装でこのインスタンスを使用して何かを行う機会があると思います。

ファクトリで行う必要があるのは、presenterTypeを解決することだけです。これは、Ninjectカーネルに委任することによって行います。

于 2012-06-04T15:47:43.857 に答える