1

WinForms アプリケーションで Ninject を使用したいと考えています。ユーザーコントロールに使用する方法がわかりません。DI フレームワークを介して構成したいサービスに依存する場合もあります。これらのコントロールは、デザイナーを通じて管理できる必要があります (したがって、既定のコンストラクターが必要です)。

では、このユーザー コントロールのプロパティに依存関係を挿入する方法はありますか? デザイナーはそれを構築できる必要があるため、kernel.Get<TestClass>ここでは機能しません。メソッドの依存関係を「埋める」ことができるメソッドまたはコードはありForm_OnLoad()ますか?

既存のオブジェクトのプロパティに挿入したい他の例も考えられますが、WinForms ユーザー コントロールが最も簡単に説明できます。

4

2 に答える 2

2

発想を転換する必要があると思います。Model View Controllerでは、View の役割は 1 つだけです。それは、データを表示することです。

そのデータがどのようにそこに到達するかはコントローラーの責任であり、データがメモリ内でどのように表現されるかはモデルによって決定されます。

Windows フォーム用の特定の MVC フレームワークはありませんが、大まかなフレームワークを手動で作成することは可能です。または、(現在は廃止された)複合アプリケーション ブロックを調べて、これを行う方法についてのアイデアを得ることができます (ただし、CAB はおそらくほとんどの人の好みには複雑すぎる)。現在利用できるより洗練されたオプションがありますが、それらには WPF が必要です。

いずれにせよ、依存関係をビューに注入する代わりに、それらをコントローラーに注入し、コントローラーにインスタンスを作成させ、ビュー (コントロール) を正しく設定します。

このようにして、本来あるべきように、コントロールを DI の問題から解放することができます。

于 2010-01-24T20:50:48.813 に答える