0

私は単純なダイアグラムエディタを持っており、IoCとDIに関する本を読んだ後、それらが提供する助けを借りてコードを切り離そうと決心しました。ユーザーがダイアグラムアイテムをダイアグラムに追加すると、アイテムは抽象ファクトリによって作成され、アイテムの内部ダイアグラムリストに追加されるように見えます。しかし、ユーザーがdiargamからアイテムを削除したい場合はどうすればよいでしょうか。まず、内部リストからアイテムを削除する必要があります。それでは、IoC.Release(Item)かどうかについて誤解がありますか?IoC.Release(Item)を呼び出さない場合(オブジェクト内のIoCの知識を回避)、IoC内のItemで何が起こったか。

PS:私はキャッスルウィンザーを使おうとしています

4

1 に答える 1

2

抽象機能(Windsor TypeFactoryを使用して実装されていると思います)を使用してコンポーネントを作成する場合、それらを解放しないと、コンポーネントはガベージコレクションされません。コンポーネントは、次のいずれかによってリリースできます。

  1. 抽象ファクトリでReleaseメソッドを作成します。このメソッドは、1つの引数(通常はオブジェクト)とvoidリターン型を受け取る必要があります。このメソッドを呼び出すと、作成されたコンポーネントが解放されます。
  2. 工場を解放します。これにより、ファクトリによって作成されたすべてのコンポーネントがリリースされます。

一般に、コンテナを直接呼び出すことはお勧めできません。コンテナを直接呼び出すのは次の場合のみです。

  1. コンテナをセットアップします。
  2. トップレベルのコンポーネントを解決します。
  3. コンテナ(および内部のすべてのコンポーネント)を廃棄します

これがお役に立てば幸いです。

よろしく、Marwijn。

于 2013-02-26T07:29:27.997 に答える