gpt4 book ai didi

c# - 抽象可重用库中的合成根

转载 作者:太空狗 更新时间:2023-10-30 00:19:56 25 4
gpt4 key购买 nike

第一个问题

Locate the correct composition root for a .NET library

帮助阐明了依赖注入(inject)。 Steven 的详尽回答(如果可能的话,用几句话)可重用库是一个特殊情况,在这里我们可以使用poor-man-injection(参见回答完整性)。

研究AutoFixture的源代码,你可以注意到主组件在任何地方都使用 DI,而不依赖于容器;在 Mark Seemann 中有很好的解释书。

问题是:有人可以引入一种模式(或良好实践)来在不使用容器的情况下抽象组合根吗?

进一步说明(可选):

回到 AutoFixture,其中组合根出现在 Fixture 类型构造函数中;我认为 *Relays 类用于以类似的方式对实例进行分组,某些 DI 库具有模块的概念。有趣的是,有一个名为 BehaviourRoot 的类型位于图表的顶部(这是我正在搜索的抽象类型吗?)。

最佳答案

description of the Composition Root pattern明确声明它可以在没有 DI 容器的情况下实现。该模式与容器的使用无关,可以与容器一起使用,也可以不与容器一起使用。

组合根是应用程序的入口点。根据定义,它没有调用者,因此抽象它没有意义。

引用上面的文章:

The Composition Root is an application infrastructure component.

Only applications should have Composition Roots. Libraries and frameworks shouldn't.

(大胆强调)

AutoFixture 是一个库,因此没有合成根。 Fixture 类是 Façade ,本着 build 一个DI-friendly library的精神.

关于c# - 抽象可重用库中的合成根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15402292/

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