我已经创建了一些 Autofac 模块......现在我想使用 web.config 在我的容器中注册其中一些......在我的 web.config 中,我写了:
<autofac defaultAssembly="Autofac.Example">
<modules>
<module type="DebugModuleTest1"></module>
<module type="DebugModuleTest2"></module>
</modules>
</autofac>
现在我必须构建我的容器。但是我不清楚autofac文档。我不明白我必须做什么才能阅读我的模块和构建容器。
public class MyCustomContainer
{
public void Build(HttpConfiguration config)
{
var builder = new ContainerBuilder();
Microsoft.Extensions.Configuration.ConfigurationBuilder x = new Microsoft.Extensions.Configuration.ConfigurationBuilder();
//var sec = x.AddInMemoryCollection().Build().GetSection("autofac");
// var y = x.AddXmlFile("Web.config");
var y = new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory);
var z = y.AddXmlFile("Web.Config");
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
}
我正在使用最新版本的 Autofac,所以我没有ConfigurationSettingsReader
可用的课程。
任何人都可以帮助我吗?
编辑
我在 web.config 上发现了有趣的保存配置,因为这样我可以根据我的解决方案配置“更改”web.config(你知道,经典的 web.debug.config、web.release.config 等)......
这可以帮助我注册正确的模块,避免使用指令(#if bla bla bla,...)或简单的条件...
我已经在使用模块,但我认为正确的解决方案不是在模块内添加一个属性来根据我要部署项目的选定环境选择要解析的组件。我只是想到这个解决方案阅读这个例子(顺便说一句,Flexibility to Override还是指ConfigurationSettingsReader
. 可以吗?)