IOC:AutoFac使用demo
2015-08-02 14:36
477 查看
使用autofac实现依赖注入
1.引用autofac.dll和autofac.configuration.dll
2.新增接口IDAL
2.新增SqlserverDAL类和OracleDAL类,并继承IDAL
3.在程序里直接实现IOC注入
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
DEMO源码
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
相关文章推荐
- java基础常见面试题
- 红外发射与调制信号
- Java Metrics
- iOS 将一个View显示覆盖到NavigationBar上面
- 小贝_redis key键值学习
- php 按条件进行计算的方法
- 安装VC++后,打开“计算机”很慢
- ionic 的Toast提示信息
- How PowerShell Differs From the Windows Command Prompt
- Android Activity的探讨——入门
- 【POJ2063】【Investment】
- 小贝_redis string类型学习
- vs2013提交github代码
- 百度离职员工给全体职场人的11条建议
- 怎样从ipa格式文件获取资源图片
- 正确重写hashCode的办法
- 你要能吃苦,找苦吃,凡事别怕,想到就去做,做了就去坚持,别后悔。
- Avro简介
- 如何高效利用GitHub
- 计算机是如何启动的?