gpt4 book ai didi

c# - 如果我完全使用 IocContainer,是否应该在任何地方都使用它?

转载 作者:行者123 更新时间:2023-12-03 21:50:42 24 4
gpt4 key购买 nike

我们使用 Ioc Container 来解析项目中的大部分对象,但是似乎在任何地方都使用它可能不合适。在运行时,用户处于单个公司 ID 的上下文中,我认为在存储库或工作单元的构造函数中传递该公司 ID 似乎是合适的。我们可以在运行时为公司 ID 使用参数覆盖,但是使用

有什么好处吗?
var uow = IocContainer.Resolve<IUnitOfWork>(new ParameterOverride("companyId", companyId))

相对于

var uow = new UnitOfWork(companyId)

好的,所以我知道我可能想在某个时候创建​​一个不同的 IUnitOfWork 实现,然后我可以轻松地用 Ioc 配置交换新的实现,但我不相信我会这样做。

最佳答案

不,有时候调用 new 正是您想要的。一个示例是方法调用或狭窄范围的本地对象。

模型对象通常不受 IoC 容器的控制。您可以为每个新 session 或请求范围实例化一个实例,使用 IoC 容器在启动时永远无法获知的用户传递给您的数据。

更新:Honza Brestan 关于逻辑单元的观点是正确的。典型的 Spring 层安排是基于接口(interface)的:

view->controller->service->persistence

服务使用其他服务、模型对象和持久性来实现用例。

关于c# - 如果我完全使用 IocContainer,是否应该在任何地方都使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932969/

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