gpt4 book ai didi

dependency-injection - xml配置还是通过代码配置?

转载 作者:行者123 更新时间:2023-12-04 02:54:26 24 4
gpt4 key购买 nike

我个人喜欢从 C# 代码配置 StructureMap 的选项。据我了解,DI 的优点之一是我们可以轻松地交换新的具体实例。但是,如果配置是在代码中定义的,那么具体实例将硬编码在 dll 中。

因此,实际上,它与对依赖项进行硬编码一样好,对吗?我知道,在测试过程中它让生活更轻松......

我的观点是,改用 xml 配置不是更好吗?你想插入一个新的具体实例吗?只需让您的安装程序用新文件覆盖 structuremap.config 文件即可。

那么,配置 StructureMap 的首选方法是什么?

额外:暂时被迫使用C#配置,因为我不知道如何将连接字符串传递给实例。我可以在配置文件中写入连接字符串,但我想重用 app.config 中定义的连接字符串。

最佳答案

无论您使用哪个特定的 DI 容器,您都应该始终将应用程序对象图的解析推迟到 last responsible moment .这称为应用程序的 Composition Root .

您可以编写大部分应用程序 without ever referencing the DI Container .这也意味着您可以推迟在代码或配置中配置之间的决定,直到您需要它。

shouldn't need the container at all for unit testing ,但可能需要它进行集成测试。但是,在集成测试中,您可能需要与最终应用程序不同的容器配置。

总而言之,在代码中配置容器是当今的首选方法,因为它更健壮,并且您可以应用基于约定的配置机制。

XML 配置往往更脆弱且过于冗长。在大多数情况下,它只会减慢您的速度,因为您没有得到重构或编译器支持。

但是,当您需要能够在不重新编译应用程序的情况下交换依赖项时,XML 配置仍然有效。大多数 DI Containers 允许您混合这些方法,以便您可以在代码中使用大部分配置,但出于可扩展性的原因,在 XML 中定义了一些选定的依赖项。

关于dependency-injection - xml配置还是通过代码配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2280137/

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