摘要组合根在可重用的库中

jay*_*jay 4 c# design-patterns dependency-injection composition

在我的第一个问题

找到.NET库的正确组合根

帮助阐明了依赖注入.史蒂文的详尽答案(简言之,如果可能的话)可重用库是一个特殊情况,我们可以在这里使用poor-man-injection(请参阅答案的完整性).

研究AutoFixture的源代码,您可以注意到主要组件在任何地方使用DI而不依赖于容器; 马克·西曼(Mark Seemann)着

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

附加说明(可选):

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

Mar*_*ann 10

组合根模式的描述明确指出它可以在没有DI容器的情况下实现.该模式与容器使用无关,可以与容器一起使用,也可以不与容器一起使用.

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

引用上面的文章:

组合根是应用程序基础结构组件.

只有应用程序应具有组合根.图书馆和框架不应该.

(大胆我的重点)

AutoFixture是一个库,因此没有组合根.该Fixture课程是Façade,本着构建DI友好图书馆的精神.