[Seasar-s2dotnet 6] Re: S2.NET-1.0.0-beta3 リリース
Hosokawa Hiroyuki
hosokawa
2005年 6月 13日 (月) 17:40:21 JST
細川です。
Kazuya Sugimoto wrote:
> ・IS2Container(実際はComponentDefImplのDestroyメソッド)で
> Destoryメソッドが呼ばれた際に、コンテナに登録されている
> コンポーネントがIDisposableを実装していれば、Dispose
> メソッドを呼び出すようにしました。
この機能を試してみたのですが、
S2.NET.Framework.Container.Impl.ComponentDefImpl#Destroy()にて、
this.ComponentDeployer.Destroy();
if(this.Component is IDisposable)
{
IDisposable disposable = (IDisposable) this.Component;
disposable.Dispose();
}
となっていますが、ComponentDeployer.Destroy()をコールするのは
if(this.Component is IDisposable)
・・・
}
の後のような気がするのですが、如何でしょうか。
以下、試した内容です。間違っている様でしたら指摘して頂けたら
有難いです。
・環境 S2.Net 1.0.0-beta2のサンプル+S2.Net 1.0.0-beta3
・サンプルのLogic1ImplでIDisposableをインプリメントして
Disposeを実装。
・StartSample1にて、以下のようにInit()とDestory()を追加。
IS2Container container = S2ContainerFactory.Create(PATH);
container.Init();
StartSample1 sample1 = (StartSample1)
container.GetComponent(typeof(StartSample1));
sample1.Execute();
Console.ReadLine();
container.Destroy();
・上記サンプルを実行すると、container.Destroy()実行後に再度Logic1Implを
生成した後にLogic1ImplのDispose()が呼ばれます。
よろしくお願いいたします。
seasar-dotnet メーリングリストの案内