Autofac.Configuration程序集的作用:通过配置来实现依赖注入。
示例:
1.配置内容
<configuration>
<configSections>
<section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/>
</configSections>
<autofac defaultAssembly="MyAutofac.Services">
<components>
<component type="MyAutofac.Services.SqlDatabase, MyAutofac.Services"
service="MyAutofac.Services.IDatabase"/>
</components>
</autofac>
</configuration>
2.代码调用
[TestMethod]
public void SelectThirdTest()
{
var builder = new ContainerBuilder();
builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
////通过Lampda表达式注册DatabaseManager实例
builder.Register(c => new DatabaseManager(c.Resolve<IDatabase>()));
string result = null;
using (var container = builder.Build())
{
var manager = container.Resolve<DatabaseManager>();
result = manager.Search("SELECT * FORM USER");
}
Assert.IsNotNull(result);
}
问题:
在使用过程中,通过Nuget获取最新的稳定版本Autofac.Configuration3.3.0和Autofac3.5.2,却不能正常运行。
过程描述如下:
1.使用Autofac.Configuration 3.3.0时,参考https://www.nuget.org/packages/Autofac.Configuration/3.3.0中的说明,
Dependencies[Autofac (≥ 3.3.1 && < 4.0.0)],因此使用最新的Autofac 3.5.2。编译通过,但实际运行时,会提示缺乏对Autofac 3.3.0的引用。
2.将Autofac 3.5.2替换为Autofac 3.3.0,编译报错。
3.将Autofac.Configuration 3.3.0替换为Autofac.Configuration 3.2.0,编译通过,运行通过。
Demo下载 http://download.****.net/detail/heoo442/9134319