1

背景:我想向其他一些开发人员分发一个库(类似于 SDK 或抽象一些内部 Web 服务的工具包)。我使用 Autofac 来注入不同版本的底层服务,主要用于存根。我想将此程序集分发给广泛的开发人员:了解 IoC 的用户和不了解 IoC 的用户。

对于任何精明的开发人员,他们可以创建自己的实现来注入。否则,开发人员应该能够使用没有配置的程序集,并且永远不知道或关心 IoC 正在幕后发生。

有趣的东西:我可以为 Autofac 提供 Xml 配置,或者我可以以编程方式配置组件(后者是首选方法)。在这种情况下,直到运行时我才知道配置了什么,因此可能需要 Xml 配置。有没有办法让 Autofac 使用 Xml 配置(如果存在),如果没有提供则忽略它?

注意:我可以通过检查特定部分(“autofac”)的配置来手动实现这一点;如果它不存在,那么不要打电话

builder.RegisterModule(new ConfigurationSettingsReader());

有没有比手动检查配置更好的方法(最好是隐藏在 Autofac 中的神奇东西,因为它似乎可以做任何你要求的事情!)

4

2 回答 2

1

我在 autofac 上唯一能看到的是 wiki 上的这个页面: http ://code.google.com/p/autofac/wiki/StructuringWithModules 而你基本上已经这样做了。在所有其他注册之后运行 XML 注册。

您的程序检查应该没问题,但我想知道配置设置阅读器是否可以自动选择使用特定类型“Autofac.Configuration.SectionHandler,Autofac”的任何内容。如果它可以自动拾取,我会检查是否在未定义任何内容时尝试从配置设置中读取是否会使您的应用程序崩溃。

于 2009-09-23T21:16:25.593 回答
1

要检查您的配置是否有特定部分,您应该使用ConfigurationManager.OpenExeConfiguration。它将为您提供一个配置对象,并从那里检查 Sections 属性以确定是否存在 Autofac 部分处理程序类型的部分。

于 2009-09-24T08:18:28.393 回答