背景:我想向其他开发人员分发一个库(类似于SDK或工具包的内容,抽象一些内部Web服务)。我正在使用Autofac来注入不同版本的底层服务,主要用于存根。我想将此程序集分发给广泛的开发人员:了解IoC的用户和不理解IoC的用户。
对于任何精明的开发人员,他们可以创建自己的实现进行注入。否则,开发人员应该能够使用没有配置的程序集,永远不会知道或关心IoC正在发生。
有趣的东西:我可以为Autofac提供Xml配置,或者我可以以编程方式配置组件(后者是首选方法)。在这种情况下,我不知道在运行时之前配置了什么,因此可能需要Xml配置。有没有办法让Autofac使用Xml配置(如果存在),否则如果没有提供则忽略它?
注意:我可以通过检查特定部分的配置(“autofac”)手动实现;如果它不在那里,那么不要打电话
builder.RegisterModule(new ConfigurationSettingsReader());
有没有比手动检查配置更好的方法(最好是隐藏在Autofac中的神奇东西,因为它似乎可以做任何你要求的事情!)
答案 0 :(得分:1)
我在autofac上唯一看到的就是维基上的这个页面: http://code.google.com/p/autofac/wiki/StructuringWithModules 你基本上已经这样做了。只需在所有其他注册后运行XML注册。
您的程序化检查应该没问题,但我想知道配置设置阅读器是否可以自动选择使用特定类型“Autofac.Configuration.SectionHandler,Autofac”的任何内容。如果它可以自动选择它,我只会检查是否在未定义任何内容的情况下尝试从配置设置读取时会使应用程序崩溃。
答案 1 :(得分:1)
要检查您的配置是否包含特定部分,您应该使用ConfigurationManager.OpenExeConfiguration。它将为您提供Configuration object并从那里检查Sections属性以确定是否存在Autofac部分处理程序类型的一部分。