StructureMap配置:用于最小化StructureMap程序集依赖性的选项

时间:2010-12-03 19:19:03

标签: dependency-injection inversion-of-control structuremap

我理解如何实现StructureMap注册表,我的问题涉及这样一个事实,即包含StructureMap注册表的每个项目都需要对StructureMap程序集的静态引用。对于如何为大量项目(30+)构建配置而不强制每个项目采用此依赖关系,是否有最佳实践?

我想,另一种方法是创建一个可由宿主进程引用的引导程序集。引导程序将执行所有连线。在这种情况下,引导程序集将引用所有项目。这具有集中对StructureMap的引用的好处,因此所有项目都不知道StructureMap。

使用基于XML的配置不适合我。

是否还有其他配置选项可以最大限度地减少解决方案中项目必须采用的静态引用数量?我猜是没有,但我想我会征求其他一些意见。

1 个答案:

答案 0 :(得分:4)

从技术上讲,您只需要一个项目来引用容器框架,那就是顶级应用程序项目。它引用所有其他项目并指定组件的配置。

这使得整个图形配置不在每个项目的控制之下,而是选择仅在使用它们的地方定义图形。这为每个应用程序提供了完全自由的配置组件,而不是假设组件每次都以相同的方式使用(正如每个项目固有的注册表所暗示的那样)。

在可能或可能没有用的旁边:在量子物理学中,当我们观察粒子时,我们将它从每个可能的状态折叠成特定的。框架类似,因为它们在观察之前不存在于单个状态中,这意味着“在应用程序中使用”。这将应用程序构建为观察者,这是框架折叠成单个表单的上下文。

现在,我通常不希望应用程序既负责正在运行的应用程序,也要负责配置该运行时。出于这个原因,我倾向于有一个Composition项目,它引用其他项目以及容器框架。然后,实际的应用程序项目可以引用Composition项目。这将外部化每个项目的注册表,包括应用程序项目,生成一个内聚组件,其唯一目的是定义特定应用程序的组成。