0

我有一个简单的图表编辑器,在阅读了有关 IoC 和 DI 的书籍后,我决定尝试借助它们提供的帮助来解耦我的代码。看起来当用户将图表项目添加到图表时,项目由抽象工厂创建并添加到项目的内部图表列表中。但是当用户想要从图表中删除项目时该怎么办?首先我应该从内部列表中删除项目。然后我对sould i IoC.Release(Item)有一些误解吗?如果我不调用 IoC.Release(Item) (避免了解我的对象中的 IoC),那么 IoC 中的 Item 会发生什么。

PS:我正在尝试使用温莎城堡

4

1 回答 1

2

当您使用抽象工具(我假设它是使用 Windsor TypeFactory 实现的)创建组件时,如果您不释放它们,您的组件将不会被垃圾收集。组件可以通过以下任一方式发布:

  1. 在您的抽象工厂上创建 Release 方法。此方法应采用一个参数(通常是对象)和一个 void 返回类型。调用此方法将释放创建的组件。
  2. 释放工厂。这将释放工厂创建的所有组件。

一般来说,直接调用容器是个坏主意。只直接调用容器到:

  1. 设置容器。
  2. 解决您的顶级组件。
  3. 处理容器(以及里面的所有组件)

我希望这有帮助。

亲切的问候,马尔维恩。

于 2013-02-26T07:29:27.997 回答