LightInjectのコンストラクタインジェクション機能を利用したいのですが、まずはIDisposableのライフタイム管理について整理したいと思います。
次の点を考慮してください。
例A
public class Foo : IDisposable
{
readonly IBar bar;
public Foo(IBar bar)
{
this.bar = bar;
}
public void Dispose()
{
}
}
例 B
public class Foo : IDisposable
{
readonly IBar bar;
public Foo(Func<string, IBar> bar)
{
this.bar = bar("myParameter");
}
public void Dispose()
{
}
}
両方の例に対する私の質問:
- Dispose メソッドは、Foo が破棄された後、IBar の LightInject によって呼び出されますか、それとも自分で dispose を呼び出す必要がありますか?
- IBar が PerContainerLifeTime を使用している場合、Foo インスタンスが破棄されるたびに Dispose が呼び出されますか?
編集 まあ、2番目の質問はばかげていると思います.PerContainerLifeTimeインスタンスは、コンテナがDisposedのときにもちろん破棄されます. 私の全体的な質問は、LightInject は注入された依存関係を追跡しており、それら自体を破棄していますか?