gpt4 book ai didi

c# - 了解 Autofac 生命周期范围

转载 作者:太空狗 更新时间:2023-10-29 21:34:50 27 4
gpt4 key购买 nike

从 Autofac 的文档中,我了解到它保留了对其创建的每个 IDisposable 实现程序的引用。因此它可能导致 OutOfMemoryException。因此,建议的解决依赖关系的方法是使用 ILifetimeScope。

假设 IService 实现了 IDisposable。

class MaintenanceTask {
private IService service;
public MaintenanceTask(ILifetimeScope lifetimeScope) {
service = lifetimeScope.Resolve<IService>();
}
//...do your work
}

但这种方法的问题在于它隐藏了依赖关系。我必须查看代码以了解该类所依赖的内容。有没有其他方法可以更明确地处理这个问题?更具体地说,无需查看代码即可使依赖关系更加明显?还是我完全错了?

最佳答案

传入生命周期范围就像传入容器本身。它类似于 Service locator (anti-) pattern并且确实存在您描述的问题:
依赖性变得不明显。

问自己一件事:
你的内存力真的有问题吗?如果没有,我不会打扰。

另一个指针:
如果您有应在使用后立即处理的个别服务,请使用工厂来创建它们并使您的类依赖于工厂而不是服务本身。

lifetime scopes的使用场景有点不同:
当您需要本地合成根时使用它们。在 Windows 应用程序中,我从来不需要这样的东西,但在 Web 应用程序中, session 或请求可能需要本地组合根。

关于c# - 了解 Autofac 生命周期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13859671/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com