(大)プロジェクトでNinjectを使用し始めており、DIの一部を起動するだけでDIを使用しています。私は、コンストラクタインジェクションを広範囲に使って構成されたサブシステムを持っています。 Ninjectを使用してこのサブシステムのクラス間の依存関係をすべて注入することは素晴らしい作業です。しかし、サブシステム外のものに依存しているので、Ninjectを使って自動的に注入することは本当に好きですが、ライフサイクルを管理することはできません。Ninjectの無効化をスキップする
私はBind<T>.ToConstant(...)
と思っています。たとえば、私はSingletonとして動作するMonkey型のクラスを持っているかもしれませんが、私のアプリケーションの別の部分はNinjectなしでライフサイクルを処理しています(例えば、作成して手動で処分するなど)。 Ninjectを装備したサブシステムが作成されると、カーネルをインスタンス化し、サブシステムクラスをバインドし、のようなものを使用してさまざまな "外部"依存関係にバインドします。これは起動時には大変効果的ですが、カーネルを処分するときには必要に応じて動作しません。私のサブシステムは、これらの外部依存関係よりも短いライフサイクルを持つことができますが、カーネルでDisposeを呼び出すと、これらの依存関係がすべて破棄されます。両方の引数を見ることができますが、Ninjectが作成しなかったオブジェクトを自動的に破棄するのは少し疑わしいようです。私は少なくともこの動作をオプトアウトする方法があることを願っていますが、これまでは何も見つかりませんでした。これに対するサポートはありますか?
ありがとうございます!私自身の理解のために、Transientスコープがどのように起動するかを理解しています。非アクティブ化のために、NinjectがTransientスコープを使用しているときに作成したインスタンスを廃棄しないことは本当ですか(私はこの点を私の読んだところで見逃しているかもしれません)。また、定数については、デフォルトのSingletonとTransientのスコープの間に唯一の違いはありますか? – StellarEleven