0

所以我不久前阅读了 .NET 中的依赖注入这本书。现在尝试使用DIC。但是,我有一些我不太明白的事情。两个例子:

1.如果我有一些旧代码或使用这样的单例静态方法的第 3 方 dll:

var objTool = ThirdPartyTool.GetInstance();
objTool.DoStuff();
...

2.如果我在创建临时对象的方法中有一些代码:

var tempOrder = new Order();
tempOrder.Total = strArray.[0];
tempOrder.ItemId = strArray.[1];
tempOrder.ShipAddress = strArray[2];
if(Customer.HasConfirmedOrder) { Customer.Order = tempOrder; }
 ...

在这两种情况下,在我进入 DIC 世界之前,我知道那些对象在超出范围时自然会被 GC 收集,或者如果有一个 Dispose() 可以调用,我有责任在我使用对象后在某个地方调用它.

DIC 如何对待他们?(我在 .NET 4 MVC 3 项目上运行 Ninject,但我猜其他语言/项目和 DIC 具有几乎相同的结构)

4

1 回答 1

1

如果一个对象不是由 DI 框架管理的,如您提供的示例,您有责任管理其生命周期,并在必要时对其调用 Dispose(特别是如果此对象实现 IDisposable)

所以回答你的问题:

DIC 如何对待他们?

它根本不对待他们。DI 框架甚至不知道它们的存在。

DI 框架负责管理您向其显式注册的对象。

于 2012-07-07T14:58:36.193 回答