gpt4 book ai didi

c# - 统一 Autowiring : to use or not to use?

转载 作者:太空狗 更新时间:2023-10-29 22:05:36 24 4
gpt4 key购买 nike

似乎新的 unity 版本已经添加了对 Autowiring 的支持。

你们中有多少人熟悉它并强烈建议我使用或不使用它?在我看来,它的使用限制了我对 DI 的控制,尤其是在单元测试方面,我是不是想错了?

最佳答案

我假设这个问题是关于自动注册的,因为 Unity 已经有多年的 Autowiring 了。

自从我写了我的 When to use a DI Container几年前的文章,我对 DI 容器的态度只是变得稍微激进了一点。在那篇文章中,我描述了使用 DI 容器的好处和权衡,而不是穷人的 DI(手动编写代码)。

我现在的优先顺序是:

  1. 手动编写Composition Root的代码(穷人的 DI)。这可能看起来很麻烦,但会给你 best possible feedback ,而且它比使用 DI 容器更容易理解。
  2. 使用自动注册(也称为约定优于配置)。虽然您失去了编译时反馈,但该机制实际上可能会将您的代码拉向更大程度的一致性,因为只要您遵循约定,事情就会“正常工作”。但是,这需要团队熟悉所选 DI 容器的自动注册 API,根据我的经验,情况不太可能如此。
  3. 仅当您有非常令人信服的理由时才使用显式注册(不:不彻底理解 DI 不是一个好的理由)。这些天来,我几乎从不这样做,所以我很难想出一些好的案例,但先进的生命周期管理可能是一个动力。

我上次在任何生产代码中使用 DI 容器已经 1.5 年了。

总而言之,为了回答有关 Unity 的具体问题:

  • 认真考虑完全不使用 Unity(或任何其他 DI 容器)。
  • 如果您必须使用 Unity,请使用自动注册功能。否则,您很可能得不偿失。

警告:根据我在 DI 和各种 DI 容器(包括显式注册和自动注册)方面的经验,我将此作为一般性回复撰写。虽然我对以前版本的 Unity 有一些了解,但我对新版本的 Unity 的自动注册功能一无所知。

关于c# - 统一 Autowiring : to use or not to use?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23306916/

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