【发布时间】:2014-10-02 06:02:25
【问题描述】:
我有两个果园模块。
两者都有 IAppSettings 的实现,它在外部 dll 中定义,并通过 nuget 包在模块中引用(所以我不能使用 IDependency )。
我在每个模块中使用 Autofac 模块类将它们连接起来。
不幸的是,这会导致“最后一次注册获胜”,并且两个模块都将使用最后一次注册的实现,即使“预期”的结果是每个都使用自己的。
需要明确的是,每个模块都是由一个单独的团队开发的,他们不相互协调,但使用相同的模块创建指南。上面的例子只是这种情况的一个例子,但可以公平地假设还会有更多。
我如何才能确保每个团队都可以为其模块注册自己的依赖项,而不必经常与其他模块的作者核对?
【问题讨论】:
-
更新:我能做到的最好的方法是使用 autofac 的命名注册。例如在模块 B builder.Register(c => new AppSettings("ModuleB")).Named
("ModuleB").SingleInstance();在消费者 public ModuleBController(ILifetimeScope scope) { _provider = scope.ResolveNamed ("ModuleB");感觉不太好,因为需要更多地意识到冲突的可能性。
标签: orchardcms autofac orchard-modules