在使用 DI 框架(例如我的例子中的 Ninject)的大型项目中,在实现新的“服务”以找出哪些其他“服务”可用作依赖项时存在哪些选项。在使用 DI 之前,我注意到我们的代码库中倾向于获取对“上帝”对象的引用,该对象几乎可以访问所有可用功能,然后 Visual Studio 的 IntelliSense 将变得非常有助于发现所有可用功能(显然这方法之所以可行,是因为最初拥有这样一个对象的架构决策不佳)。
我可以提供一些可能的答案,并对对其他人有用的东西感兴趣:
- 您应该足够了解您正在使用的整个系统,以了解存在哪些其他类/服务(例如,如果我有静态类,我只需要知道它们存在就可以使用它们)。
- 您维护代码库的良好外部文档,因此所有开发人员都理解所有类/服务(这会带来很大的文档负担,在我看来)。
- 创建一个 API 来查询 DI 容器(Ninject 内核)以获取所有绑定的列表,以查看哪些服务可用(可能只有单例)。这也可以作为构建系统的一部分来完成,以便在开发人员可以引用的每个构建时自动生成一个文档。
这曾经是其他开发人员的问题吗?