[Seasar-s2dotnet 7] Re: S2.NET-1.0.0-beta3 リリース

sugi-k@mgw.ibsnet.co.jp sugi-k
2005年 6月 13日 (月) 18:07:19 JST





杉本です。

申し訳ないです。今のままでは駄目ですね。

seasar-s2dotnet-bounces @ lists.sourceforge.jp wrote on 2005/06/13 17:39:49:

> 細川です。

> 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)
> ・・・
> }
> の後のような気がするのですが、如何でしょうか。

Destoryを後にしてしまうと、今度はdestroyMethodタグで指定された
メソッドがDisposeメソッドより後に呼び出されてしまいます。

現在はコンポーネントにnullをセットした後に、Disposeメソッドを
呼び出そうとして新しいインスタンスを生成しているので論外なのですが、

DisposeメソッドとdestroyMethodタグで指定されたメソッドと
どちらを先に呼ぶべきでしょうか?
自分はDisposeメソッドが後じゃないかな?と考えているのですが、
皆様のお考えをお聞かせ下さい。

ちなみにDisposeメソッドを後で呼ぶ場合には、
ComponentDefImpl#Destroyでは無理ですので、
SingletonComponentDeployer#DestroyなどのDeployerで
Disposeメソッドを呼ぶことになりそうです。

よろしくお願いします。



seasar-dotnet メーリングリストの案内