从 Autofac 的文档中,我了解到它保留了对其创建的每个 IDisposable 实现者的引用。因此它可能导致 OutOfMemoryException。因此,解决依赖关系的建议方法是使用 ILifetimeScope。
假设 IService 实现 IDisposable。
class MaintenanceTask {
private IService service;
public MaintenanceTask(ILifetimeScope lifetimeScope) {
service = lifetimeScope.Resolve<IService>();
}
//...do your work
}
但是这种方法的问题在于它隐藏了依赖关系。我必须查看代码以了解该类所依赖的内容。有没有其他方法可以更明确地处理这个问题?更具体地说,无需查看代码就可以使依赖关系更加明显?还是我完全错了?