首页 > 代码库 > Autofac依赖注入框架使用

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.cnpublic ActionResult Index() {        ITestBLL testBLL = Container.Resolve<ITestBLL>();        ViewBag.Name = testBLL.GetName();        return View(); }

IBLL:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:卷猫链接:http://anneke.cn/ArticleInfo/Detial?id=4来源:Anneke.cnpublic interface ITestBLL{        string GetName();}

BLL:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:卷猫链接:http://anneke.cn/ArticleInfo/Detial?id=4来源:Anneke.cnpublic 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依赖注入框架使用