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

时间: 2024-08-10 23:59:55

Autofac依赖注入框架使用的相关文章

Autofac 依赖注入框架

Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高. 官方网站http://autofac.org/ 优点:依赖注入不是目的,它是一系列工具和手段,最终的目的是帮助我们开发出松散耦合(loose coupled).可维护.可测试的代码和程序.这条原则的做法是大家熟知的面向接口,或者说是面向抽象编程. 方法一:注册组件,Register Components var builder = new Contain

Autofac 依赖注入框架 使用

简介 Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高. 官方网站http://autofac.org/ 源码下载地址https://github.com/autofac/Autofac 最新版本下载可以看到,包括源码,示例文档,与之相关的测试项目,生成的DLL文件,其他文档 控制反转和依赖注入 关于控制反转和依赖注入的文章和书籍很多,对其定义也解释的也仁者见仁,这里就不赘述了,这是本人(只代表个人观点)

浅析依赖注入框架Autofac的使用

Autofac是一款IOC框架,比起Spring.NET,Unity,Castle等等框架,它很轻量级且性能也很高,下面小编给大家介绍下依赖注入框架Autofac的使用. 下面通过代码给大家分享下依赖注入框架Autofac的使用,具体如下所示:  Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上也是很高的. 1)解压它的压缩包,主要看到Autofac.dll,Autofac.Configuration.dll,

从零开始,搭建博客系统MVC5+EF6搭建框架(2),测试添加数据、集成Autofac依赖注入

一.测试仓储层.业务层是否能实现对数据库表的操作 1.创建IsysUserInfoRepository接口来继承IBaseRepository父接口 1 namespace Wchl.WMBlog.IRepository 2 { 3 public partial interface IsysUserInfoRepository : IBaseRepository<sysUserInfo> 4 { 5 6 } 7 } 2.创建sysUserInfoRepository类继承BaseReposit

给微软的依赖注入框架写一些扩展方法

给微软的依赖注入框架写一些扩展方法 Intro 现在在项目里大多都是直接使用微软的依赖注入框架,而微软的注入方式比较简单,不如 AutoFac 使用起来灵活,于是想给微软的依赖注入增加一些扩展,使得可以像AutoFac 一样比较灵活的注册服务 Extensions RegisterTypeAsImplementedInterface 将类型注册为其实现的接口,比如 pubic class UserService:IUserService,IUserRepository{}, 注册 UserSer

快如闪电、超轻量级的基于.Net平台的依赖注入框架Ninject

一.为什么要使用依赖注入框架 依赖注入框架也叫IoC容器.它的作用使类与类之间解耦 我们看看为什么要用依赖注入框架,举个几个梨子: 1,高度耦合的类 有一个Order类,Order类是用于订单操作的,DataAccess使用的sqlserver的方式查询订单.看看代码: public class Order { private DataAccess dataAccess = new DataAccess(); public string QueryOrder() { return dataAcc

Dagger——Android上的依赖注入框架

* 你也可以去Github查看这片文章 简介 在开发程序的时候,会用到各种对象,很多对象在使用之前都需要进行初始化.例如你要操作一个SharedPreference,你需要调用getSharedPreferences(String name,int mode)来获取一个对象,然后才能使用它.而如果这个对象会在多个Activity中被使用,你就需要在每个使用的场景中都写下同样的代码.这不仅麻烦,而且增加了出错的可能.dagger的用途就是:让你不需要初始化对象.换句话说,任何对象声明完了就能直接用

Android Dagger依赖注入框架浅析

今天接触了Dagger这套android的依赖注入框架(DI框架),感觉跟Spring 的IOC差不多吧.这个框架它的好处是它没有采用反射技术(Spring是用反射的),而是用预编译技术,因为基于反射的DI非常地耗用资源(空间,时间) 由于现在开发都是用Android Studio了,所以我这里大概讲下配置Dagger框架的开发环境,需要怎么做. (由于Android Studio中用Gradle,所以跟传统我们用Eclipse配置的话,直接导入jar包,有点不一样.) 在开始看我的博文前,希望

iOS依赖注入框架系列(二):设置Typhoon

在循环的最后一部分,我们遇到了依赖注入框架为iOS - 台风,并审查其项目Rambler.Pochta使用的基本示例. 这一次,我们进入它的内部结构的研究. 周期"在iOS中右依赖驱动的应用程序" 熟悉台风 该器件台风 模块化台风 台风技巧与诀窍 台风替代品 (可选)Rambler.iOS#3. 依赖注入的iOS. 幻灯片 (可选)Rambler.iOS#3. 依赖注入的iOS. 视频 介绍 要开始分析一个小字典将被广泛使用在这篇文章中的术语: 大会(读作[essembli]). 最近