5

在我的第一个问题中

找到 .NET 库的正确组合根

帮助澄清依赖注入。Steven 的详尽回答指出(如果可能的话,用几句话)可重用的库是一个特殊的案例,我们可以在这里使用poor-man-injection(参见完整的答案)。

研究AutoFixture的源代码,您可以注意到主程序集到处使用 DI,而不依赖于容器;Mark Seemann书中很好地解释了一些事情。

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

补充说明(可选):

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

4

1 回答 1

10

组合根模式的描述明确指出它可以在没有 DI 容器的情况下实现。该模式独立于容器的使用,可以在有或没有容器的情况下使用。

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

引用上面的文章:

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

只有应用程序应该有组合根。库和框架不应该.

(加粗我的重点)

AutoFixture 是一个库,因此没有合成根。Fixture课程是Façade,本着建立一个对DI 友好的图书馆的精神。

于 2013-03-14T07:06:17.770 回答