【发布时间】:2019-05-02 15:16:25
【问题描述】:
我有Parent 类和Child 类,
父母对孩子做了一些事情,然后将其丢弃。
class Parent
{
private IChild _child;
Parent(IChild child) { this._child=child }
DoAndDisposeChild()
{
//code
//this._child.dispose();
}
}
使用autofac,我正在解析Parent 并调用DoAndDisposeChild 方法:
container.Resolve<Parent>().DoAndDisposeChild().
我通过使用autofac 的Owend 功能成功地实现了这一点:
private Owned<IChild> _child;
并将DoAndDisposeChild修改为:
DoAndDisposeChild()
{
//code
this._child.Dispose();
}
问题是我将我的代码耦合到autofac,我正在寻找不使用使用autofac 来实现处置问题的方法?
【问题讨论】:
-
一般来说,您应该不处理注入的东西。您是否有非常充分的理由不将其留在容器中?
-
IoC 容器应该管理对象的生命周期。我想知道的是容器应该如何知道它必须
Dispose()对象。 -
一般来说,唯一应该处理对象的是创建它的东西。一次性对象注入到的类不知道是否有其他任何东西对它有引用,并且不期望它被释放。这是一个整体的最佳实践,而不仅仅是依赖注入。
-
@RobertHarvey 它取决于容器的实现。一些实现会检测对象何时是一次性的,并在它超出范围时将其丢弃。
-
Here you go。问题解决了,汤姆少校。
标签: c# ioc-container