您的位置:首页 > 其它

IOC:AutoFac使用demo

2015-08-02 14:36 477 查看
使用autofac实现依赖注入

1.引用autofac.dll和autofac.configuration.dll

2.新增接口IDAL

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;

namespaceAutoFacTest
{
publicinterfaceIDAL
{

voidselect(stringmsg);

}
}


2.新增SqlserverDAL类和OracleDAL类,并继承IDAL

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;

namespaceAutoFacTest
{
publicclassSqlServerDAL:IDAL
{
publicvoidselect(stringmsg)
{
Console.WriteLine("thisissqlserver:"+msg);
}
}
}


usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;

namespaceAutoFacTest
{
publicclassOracleDAL:IDAL
{

publicvoidselect(stringmsg)
{
Console.WriteLine("thisisOracle:"+msg);
}
}
}


3.在程序里直接实现IOC注入

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingAutofac;
namespaceAutoFacTest
{
classProgram
{
staticvoidMain(string[]args)
{
////直接指定实例类型
varbuilder=newContainerBuilder();
builder.RegisterType<IDAL>();
builder.RegisterType<OracleDAL>().As<IDAL>();
using(varcontainer=builder.Build())
{
varmanager=container.Resolve<IDAL>();
manager.select("小xiaoniao");

}
Console.ReadLine();

}
}
}

4.也可以通过引用Autofac.Configuration.dll来配置App.config或Web.config配置文件注入
如下:


<configuration>
<configSections>
<sectionname="autofac"type="Autofac.Configuration.SectionHandler,Autofac.Configuration"/>
</configSections>
<autofacdefaultAssembly="AutoFacTest">
<components>
<componenttype="AutoFacTest.OracleDAL,AutoFacTest"service="AutoFacTest.IDAL"/>
</components>
</autofac>


5.实现直接注入和通过配置文件注入





usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingAutofac;
usingAutofac.Configuration;
namespaceAutoFacTest
{
classProgram
{
staticvoidMain(string[]args)
{
test1();//直接注入
test2();//配置文件注入
Console.ReadLine();
}
///<summary>
///直接注入
///</summary>
privatestaticvoidtest1()
{
////直接指定实例类型
varbuilder=newContainerBuilder();
builder.RegisterType<IDAL>();
builder.RegisterType<OracleDAL>().As<IDAL>();
using(varcontainer=builder.Build())
{
varmanager=container.Resolve<IDAL>();
manager.select("直接注入,小xiaoniao");

}

}

///<summary>
///配置文件注入
///</summary>
privatestaticvoidtest2()
{
////直接指定实例类型
varbuilder=newContainerBuilder();
builder.RegisterType<IDAL>();
builder.RegisterModule(newConfigurationSettingsReader("autofac"));
using(varcontainer=builder.Build())
{
varmanager=container.Resolve<IDAL>();
manager.select("配置文件注入,小xiaoniao");

}

}
}
}

直接注入显示结果:thisisOracle:小xiaoniao

将builder.RegisterType<OracleDAL>().As<IDAL>();改成builder.RegisterType<SqlserverDAL>().As<IDAL>();则会显示:thisissqlserver:小xiaoniao

直接注入和配置文件注入显示:
thisisOracle:直接注入,小xiaoniao
thisisOracle:配置文件注入,小xiaoniao


DEMO源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: