慢慢总结

基础使用样例,在 Application_Start 中直接使用

            //autofac注册
var builder = new ContainerBuilder();
//注册Controller方式一 自己指定程序集
//var assemblies = new List<Assembly> { Assembly.Load("TestEf.Web") };
//builder.RegisterControllers(assemblies.ToArray());
//注册Controller方式二 当前执行项目的程序集
builder.RegisterControllers(Assembly.GetExecutingAssembly());
//注册泛型类使用 RegisterGeneric
builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();
builder.Register<IDbContext>(c => new TestEfContext()).InstancePerLifetimeScope();
//注册普通类使用 RegisterType
builder.RegisterType<ArticleService>().As<IArticleService>().InstancePerLifetimeScope();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

① 注册 Controller

方式一:

//注册Controller方式一  自己指定程序集
var assemblies = new List<Assembly> { Assembly.Load("TestEf.Web") };
builder.RegisterControllers(assemblies.ToArray());

方式二:

//注册Controller方式二  当前执行项目的程序集
builder.RegisterControllers(Assembly.GetExecutingAssembly());

② 常用接口注册方式

方式一:泛型注册使用  RegisterGeneric

builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();

方式二:普通类型使用 RegisterType

builder.RegisterType<ArticleService>().As<IArticleService>().InstancePerLifetimeScope();

③生命周期

InstancePerDependency  默认值,每次解析时都会得到一个新的实例

SingleInstance 单例 每次解析都会得到同一个实例

InstancePerLifetimeScope 同一生命周期内得到相同的实例

InstancePerMatchingLifetimeScope  同一生命周期升级版,可以指定与某个生命周期获取获取相同的实例

InstancePerRequest  根据Request请求来确定,在一个web/http/api的上下文中共享一个组件实例

Thread Scope 线程内共享,没有特定的方法,可以根据 InstancePerMatchingLifetimeScope 来实现

④使用

方式一:在静态方法中,没有构造函数来进行注册

var _articleService = DependencyResolver.Current.GetService<IArticleService>();

Autofac 使用经验的更多相关文章

  1. AutoFac在项目中的应用

    技能大全:http://www.cnblogs.com/dunitian/p/4822808.html#skill 完整Demo:https://github.com/dunitian/LoTCode ...

  2. Autofac - MVC/WebApi中的应用

    Autofac前面写了那么多篇, 其实就是为了今天这一篇, Autofac在MVC和WebApi中的应用. 一.目录结构 先看一下我的目录结构吧, 搭了个非常简单的架构, IOC(web), IBLL ...

  3. Autofac - 生命周期

    实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用 ...

  4. Autofac - 属性注入

    属性注入不同于通过构造函数方式传入参数. 这里是通过注入的方式, 在类创建完毕之后, 资源释放之前, 给属性赋值. 这里, 我重新弄一些类来演示这一篇吧. public class ClassA { ...

  5. Autofac 的点滴

    泛型类型的注册和使用 public interface IRepository<T> where T:class { } public interface ISchoolDetailRep ...

  6. ASP.NET Core 整合Autofac和Castle实现自动AOP拦截

    前言: 除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject和Castle). 1.ASP ...

  7. Autofac 的属性注入,IOC的坑

    Autofac 是一款优秀的IOC的开源工具,完美的适配.Net特性,但是有时候我们想通过属性注入的方式来获取我们注入的对象,对不起,有时候你还真是获取不到,这因为什么呢? 1.你对Autofac 不 ...

  8. Autofac 组件、服务、自动装配 《第二篇》

    一.组件 创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式: 1.类型创建RegisterType AutoFac能够通过反射检查一个类型,选择 ...

  9. 使用Adminlite + ASP.NET MVC5(C#) + Entityframework + AutoFac + AutoMapper写了个api接口文档管理系统

    一.演示: 接口查看:http://apidoc.docode.top/ 接口后台:http://apiadmin.docode.top/ 登录:administrator,123456 二.使用到的 ...

随机推荐

  1. 【Java】LinkedHashMap

    Java LinkedHashMap 标签(空格分隔):Java source-code 总结 1.LinkedHashMap基于HashMap,实现了按插入顺序.LRU,实现方式主要是继承了Hash ...

  2. WindowsForm客户端自动更新逻辑

    启动客户端的时候,单独开一个线程,该线程主要是判断指定服务器上的更新包和本地使用的客户端是否一致,是否需要更新,不需要更新,则退出,需要更新则从服务端的下载更新包,然后提示用户是否更新,点击更新,启动 ...

  3. centos7 windows7 双系统重新构建引导和启动顺序

    安装centos后无法引导启动windows7的解决方法 在电脑Windows7系统上安装Centos7,安装后找不到Windows7引导菜单. 原因:因为CentOS 7已采用新式的grub2系统, ...

  4. osg::Camera 参数修改

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include<iostream> #include <osgV ...

  5. linux简单命令4---压缩与解压

    1:压缩命令:zip 2:.gz压缩,不能压缩目录,会压缩目录里的文件 3:.bz2压缩,不能压缩目录,直接报错 ------------------------------------------- ...

  6. 在Vue中用富文本编辑器(可以ctrl+c粘贴)

    我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ...

  7. using kafkacat reset kafka offset

    1. install kafkacat Ubuntu apt-get install kafkacat CentOS install deepenency yum install librdkafka ...

  8. Django之form表单验证顺序

    概述 django框架提供了一个forms类,来处理web开发中的表单相关事项.众所周知,form最常做的是对用户输入的内容进行验证,为此django的forms类提供了全面的内容验证支持. 验证过程 ...

  9. JEECG新建用户不用系统用户表的实现

    首先新增组织机构 和 角色: -- 新增 组织机构 INSERT INTO `t_s_depart` VALUES ('dept001', '你所在的机构', '你所在的机构的描述', null, ' ...

  10. 第二十四章 在线会话管理——《跟我学Shiro》

    目录贴:跟我学Shiro目录贴 有时候需要显示当前在线人数.当前在线用户,有时候可能需要强制某个用户下线等:此时就需要获取相应的在线用户并进行一些操作. 本章基于<第十六章 综合实例>代码 ...