autofac-在多模块应用中的正确使用

本文关键字:模块 应用 autofac- | 更新日期: 2023-09-27 18:29:12

我正在开发一个由许多模块组成的应用程序,其中一些模块依赖于其他模块。我现在决定使用Autofac来解决循环依赖关系,并总体上改进体系结构。

要配置autofac,我使用xml方法(http://code.google.com/p/autofac/wiki/XmlConfiguration)。

现在我不知道如何实现Autofac。我是否需要在应用程序的每个模块中都有自动交流的参考?这意味着每次我想解决依赖关系时,我都必须注册所有组件。。。

ContainerBuilder builder = new ContainerBuilder();
builder.RegisterModule(new ConfigurationSettingsReader("autofac", configPath));
IContainer container = builder.Build();
IWhatever w = container.Resolve<IWhatever>();

这样做吗?

还是将Autofac封装在单独的模块中更好?使用这种方法,我只需要注册一次模块(当应用程序启动时),并且可以使用封装的Autofac来解决依赖关系。。。

IWhatever w = container.Resolve<IWhatever>();

我希望有人能告诉我使用Autofac的最佳方法。

谢谢!

autofac-在多模块应用中的正确使用

如果您想使用autofac模块,每个项目都需要对autofac核心包有依赖关系。

按照此处所述使用自动交流模块:http://autofac.readthedocs.io/en/latest/configuration/modules.html

更新

我描述了为什么您应该在这里使用模块:http://www.codeproject.com/Articles/386164/Get-injected-into-the-world-of-inverted-dependenci

容器的单独模块不仅是更好的选择,也是唯一正确的选择。AFAIK-IoC容器实例必须是singleton。

至少我用过Unity这种方式——创建容器的公共静态实例,在应用程序启动时初始化它,然后从所有模块访问它。