5

NInject (できれば 2.0) では、Web アプリケーションでオブジェクトの依存関係を結び付けるためにどのようなオプションがありますか?

それらは XML 構成ファイルで定義できますか?

それとも、コードを介して行う必要がありますか?

4

4 に答える 4

10

xml ベースの構成用の拡張機能があります: https://github.com/ninject/ninject.extensions.xml

ただし、コードでさらに強力なバインドを行うことができます。

于 2010-01-27T16:42:44.320 に答える
5

NinjectにはXML構成がありません。申し訳ありませんが、直接リンクを提供することはできません(彼らのサイトにはフラッシュ要素があります)が、ninject.orgからの引用です:

XMLから自分を解放する

他のほとんどの.NET依存性注入フレームワークは、XMLを使用して型バインディングを宣言することを中心に設計されています。Ninjectは、面倒でエラーが発生しやすいテキストを作成するのではなく、本格的なコードを使用してアプリケーションの各部分を接続できる流暢なインターフェイスを備えています。これは、コード補完や型安全性など、IDEとコンパイラの機能を利用できることを意味します。

于 2010-01-27T14:59:42.357 に答える
4

コードのみでバインディングを定義する場合の問題は、dll への参照を追加する必要があることです。新しい dll への参照を追加 (古いものへの参照を削除) せずにバインディングを変更し、コードを変更して再コンパイルすることはできません。

xml 構成があれば、参照はまったく必要なく、再コンパイルする必要もありません。現在、DIを使用してリポジトリをコントローラーに渡すMVCアプリがあります。バインディングを追加するための Ninject コードは、リポジトリの具体的な実装を使用します。それでも、実装を含む dll への参照を追加する必要があります。たった1行のコードで!

それとも、Ninject を使用してこれを達成する可能性はありますか?

于 2011-03-27T21:07:41.073 に答える
3

何を達成しようとしていますか?どのようなものを設定しようとしていますか? 戦略を動的に選択しますか? ポート番号を渡す?より良い答えを得るために、あなたが考えていることについてもっと多くの情報を提供することができます[それを受け入れることができます:P]。

次の懸念事項を分割する必要があります。

  1. 既知のオブジェクトの配線 (DI)
  2. 構成 - 一般に、それらを小さな焦点を絞ったサブセットに分割する必要があります。たとえば、厳密に型指定された構成要素と、設定のグローバル プールを大きな山のように混ぜ合わせるなどです。appSettings
  3. プラグイン /不明なオブジェクトの配線 (MEF?)

最初のプールでは、コードでそれを行うのが正しい方法であり、XML がもたらす利点は思いつきません。強い名前などのコンテキストで。

于 2010-01-27T16:41:22.730 に答える