3

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()
    {

    }
 }

両方の例に対する私の質問:

  1. Dispose メソッドは、Foo が破棄された後、IBar の LightInject によって呼び出されますか、それとも自分で dispose を呼び出す必要がありますか?
  2. IBar が PerContainerLifeTime を使用している場合、Foo インスタンスが破棄されるたびに Dispose が呼び出されますか?

編集 まあ、2番目の質問はばかげていると思います.PerContainerLifeTimeインスタンスは、コンテナがDisposedのときにもちろん破棄されます. 私の全体的な質問は、LightInject は注入された依存関係を追跡しており、それら自体を破棄していますか?

4

1 に答える 1