編集:私はここで本当に愚かな何かをしなければなりません城ウィンザー解放コンポーネント
var container = new WindsorContainer();
container.Register(Component.For<IFoo>().ImplementedBy<Foo>().LifeStyle.Singleton);
var foo = container.Resolve<IFoo>();
container.Kernel.ReleaseComponent(foo);
var foo2 = container.Resolve<IFoo>();
Assert.IsTrue(foo != foo2) // this fails
public interface IFoo : IDisposable { }
public class Foo : IFoo {
public void Dispose()
{
}
}
:
私が完成しましたが、私は次のようにまで私の問題を簡素化することができましたとして、質問を言い換え...どんな考え?
基本的に、私がここで達成しようとしているのは、コンポーネントのすべての解像度が一定期間(スコープ)同じインスタンスを返すことです。これを達成するより良い方法があれば、私は確かにそれに開いています。
編集: これはRTFMです。明らかにこれは設計によるものです。私はここにカスタムライフスタイルマネージャーを欲しいものを達成する最善の方法ですか?
ありがとうございました。
はい、それはあなたがしたい行動なら、カスタムライフスタイルは –
ありがとうございます。これを行うためにAbstractLifestyleManagerから継承したカスタムクラスを追加しましたが、ReleaseComponentを呼び出すとReleaseは呼び出されません。カーネルのReleasePolicy.HasTrackがtrueを返す場合、Releaseは呼び出されるように見えますが、それはすべてのコンポーネントで起こっていません...アドバイスできますか?ありがとう。 – Jeff