Autofac依赖注入框架使用
Posted 琴吹䌷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Autofac依赖注入框架使用相关的知识,希望对你有一定的参考价值。
简介: Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高
控制反转和依赖注入:
控制反转 IOC(Inverse Of Control) : 简单通俗的说,就是本来创建对象的实例,由我们程序员自己创建,现在交给IOC容器来创建,所以称为控制反转。
依赖注入DI(Dependence injection) : 容器创建好实例后再注入,称为依赖注入。
主要应用: 实现各个层之间的解耦。每个层调用的都是接口,而不是具体的类. 好处就是以后需要对代码做修改的话,只需要将写好的代码编译成dll 替换原来程序中的dll,无需重新编译。 本来创建接口对象的过程由我们自己创建,利用抽象工厂模式,配合反射也可以达到解耦. 现在创建接口对象的过程由IOC容器创建.达到解耦
使用Demo: 这个Demo主要演示的就是在UI层通过Autofac来帮我们创建IBLL的实例
控制器:
著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial?id=4 来源:Anneke.cn public ActionResult Index() { ITestBLL testBLL = Container.Resolve<ITestBLL>(); ViewBag.Name = testBLL.GetName(); return View(); }
IBLL:
著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial?id=4 来源:Anneke.cn public interface ITestBLL { string GetName(); }
BLL:
著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial?id=4 来源:Anneke.cn public class TestBLL : ITestBLL { public string GetName() { return "卷猫"; } }
IOC容器:
著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial?id=4 来源:Anneke.cn /// <summary> /// Autofac IOC类 /// </summary> public class Container { /// <summary> /// IOC 容器 /// </summary> public static IContainer container = null; public static T Resolve<T>() { try { if (container == null) { Initialise(); } } catch (Exception ex) { throw new Exception("IOC实例化出错!" + ex.Message); } return container.Resolve<T>(); } /// <summary> /// 初始化 /// </summary> public static void Initialise() { var builder = new ContainerBuilder(); //格式:builder.RegisterType<xxxx>().As<Ixxxx>().InstancePerLifetimeScope(); 可以写多个 builder.RegisterType<TestBLL>().As<ITestBLL>().InstancePerLifetimeScope(); container = builder.Build(); } }
完整Demo:https://github.com/zhenzhenkeai/AutoFacDemo
以上是关于Autofac依赖注入框架使用的主要内容,如果未能解决你的问题,请参考以下文章