如何阻止两个果园模块冲突

时间:2014-10-01 13:16:28

标签: orchardcms autofac orchard-modules

我有两个Orchard模块。

两者都有IAppSettings的实现,它在外部dll中定义,并通过nuget包在模块中引用(所以我不能使用IDependency)。

我在每个模块中使用Autofac Module类连​​接它们。

不幸的是,这导致"最后的注册胜利"并且这两个模块将使用最后注册的实现,即使"期望"结果是每个人都使用自己的。

要明确的是,每个模块都是由一个单独的团队开发的,他们不会相互协调,但确实使用相同的模块创建指南。上面的例子只是这种情况的一个例子,但公平地假设会有更多。

我如何确保每个团队都可以为自己的模块注册自己的依赖项,而无需经常与其他模块的作者联系?

1 个答案:

答案 0 :(得分:1)

每个租户有一个Autofac容器,而不是每个(Orchard)模块。你看到了这个含义。

然而,由于依赖关系将限定为扩展,因此模块之间的交互将受到严重阻碍,因此情况可能不同。

DI的另一个要点是你可以覆盖实现:这里也是需要的,因为如果你在模块A中实现依赖,那么也在模块B中(模块B依赖于模块A)然后模块B可以覆盖默认实现。这是一件好事。

您可以实现策略模式,而不是要求您的接口具体实现什么样的失败DI。但如果你告诉我更多细节,我可以提供更多帮助。