首页 > 解决方案 > 每个模块都有一个用于 DI 的 XML 配置文件是否有意义?

问题描述

我一直在阅读有关 DI 和组合根的信息。我在文章中读到只有应用程序应该有组合根,而不是库。

但是让我们假设我有一个带有一些接口及其实现的可重用包。我想将该接口绑定到实现。我认为如果用户必须自己做这一切会很麻烦。

在可重用模块中包含一个 XML DI 配置文件是否有意义,它将在组合根中使用和处理?

标签: dependency-injectioninversion-of-controlcompositionroot

解决方案


尽管类库不应包含组合根,但您始终可以在库中包含一个工厂,为简单的用例创建默认图。您在库中的类型仍然是公开的,以便高级用户可以以自定义方式组合类型(例如,使用他们的特殊装饰器装饰某些类型)。您包含的工厂也可以参数化以支持多个基本用例。

关于 XML 配置,虽然可行,但在大多数情况下,维护使用 XML 进行 DI 配置的应用程序非常困难,因为一旦在代码中重命名了类型,XML 中的类型名称将不会自动重命名。


推荐阅读