に大きな依存関係の範囲を管理し、私はおおよそ次のようになりますシングルトンとしてninjectによって管理されているクラスがあります:私はIInitialiserが(実際にすべてがコンテナ管理されている)Iocを経由してsuppied持っninject
class InMemoryDb
{
IInitialiser _initialiser;
SomeBackingStore _store;
InMemoryDb(IInitialiser initialiser)
{
_initialiser = initialiser;
}
void Init()
{
//once init'd i don't care what happens to the _initialiser field
_store = _initialiser.Initialise();
}
}
を。私の問題は、いったん初期化されると、_initialiserオブジェクトはガベージコレクションされません(なぜなら、それはTechinically InMemoryDbシングルトンオブジェクトによって参照されているためです)、アプリケーションを消費するメモリ内に座っています(5gig以上です)。どのようにしてオブジェクトをきれいに整理して、オブジェクトをIOC経由で配線し、使用後に処分することができますか?基本的に初期化されると、そのオブジェクトを処分することが安全であることが確信できます。 init()メソッドの実行が完了、それは私のコードは、テスト不能になりたら、それは範囲外であるとして、これは最終的にGCによってクリーンアップを取得します
void Init()
{
_store = new Initialiser().Initialise();
}
:残念ながら、私がこれまでに頼ってきた
それについてのにおいがあります。
また、これはServiceLocator呼び出しで自分のコードを調べるので理想的ではありません。
これをより良く構築する方法についてのご意見はありますか?
ありがとうございました。単純な解決策のように聞こえる – AaronHS