Autofac 使用经验
慢慢总结
基础使用样例,在 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 使用经验的更多相关文章
- AutoFac在项目中的应用
技能大全:http://www.cnblogs.com/dunitian/p/4822808.html#skill 完整Demo:https://github.com/dunitian/LoTCode ...
- Autofac - MVC/WebApi中的应用
Autofac前面写了那么多篇, 其实就是为了今天这一篇, Autofac在MVC和WebApi中的应用. 一.目录结构 先看一下我的目录结构吧, 搭了个非常简单的架构, IOC(web), IBLL ...
- Autofac - 生命周期
实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用 ...
- Autofac - 属性注入
属性注入不同于通过构造函数方式传入参数. 这里是通过注入的方式, 在类创建完毕之后, 资源释放之前, 给属性赋值. 这里, 我重新弄一些类来演示这一篇吧. public class ClassA { ...
- Autofac 的点滴
泛型类型的注册和使用 public interface IRepository<T> where T:class { } public interface ISchoolDetailRep ...
- ASP.NET Core 整合Autofac和Castle实现自动AOP拦截
前言: 除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject和Castle). 1.ASP ...
- Autofac 的属性注入,IOC的坑
Autofac 是一款优秀的IOC的开源工具,完美的适配.Net特性,但是有时候我们想通过属性注入的方式来获取我们注入的对象,对不起,有时候你还真是获取不到,这因为什么呢? 1.你对Autofac 不 ...
- Autofac 组件、服务、自动装配 《第二篇》
一.组件 创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式: 1.类型创建RegisterType AutoFac能够通过反射检查一个类型,选择 ...
- 使用Adminlite + ASP.NET MVC5(C#) + Entityframework + AutoFac + AutoMapper写了个api接口文档管理系统
一.演示: 接口查看:http://apidoc.docode.top/ 接口后台:http://apiadmin.docode.top/ 登录:administrator,123456 二.使用到的 ...
随机推荐
- ASP程序中调用Now()总显示“上午”和“下午”,如何解决?
ASP程序中调用Now()总显示这样的格式:“2007-4-20 下午 06:06:38”,我要的正确格式为“2007-4-20 18:06:38”,我已经通过控制面板==>区域和语言选项==& ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_12-课程预览功能开发-需求分析
5 课程预览功能开发 5.1 需求分析 课程预览功能将使用cms系统提供的页面预览功能,业务流程如下: 1.用户进入课程管理页面,点击课程预览,请求到课程管理服务 2.课程管理服务远程调用cms添加页 ...
- 一百四十五:CMS系统之帖子加精和取消加精
模型 class HighlightPostModel(db.Model): """ 帖子加精信息 """ __tablename__ = ...
- Django——models中导入数据重复的解决办法
如果你导入数据过多,导入时出错了,或者你手动停止了,导入了一部分,还有一部分没有导入.或者你再次运行上面的命令,你会发现数据重复了,怎么办呢? django.db.models 中还有一个函数叫 ge ...
- ubuntu18.04安装chromium浏览器
sudo add-apt-repository ppa:a-v-shkop/chromium sudo apt-get upate sudo apt-get install chromium-brow ...
- python迭代器、生成器、装饰器之迭代器
迭代是Python最强大的功能之一,是访问集合元素的一种方式. 一般分为可迭代对象,迭代器,可迭代对象不一定是迭代器,但迭代器一定是可迭代对象 1.可以直接作用于for循环的数据类型 第一类:集合数据 ...
- 第一次搭建redis集群
#端口port 8003 #绑定IPbind 9.1.186.60 #redis 后台运行daemonize yes #开启集群cluster-enabled yes #指定集群配置文件nodes.c ...
- nmap探测大网络空间中的存活主机
前言 扫描大网络空间中的存活主机 实现 nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oX nmap_output.x ...
- 【ARTS】01_32_左耳听风-201900617~201900623
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- AWS 云上安全最佳实践
目录 一.账号及访问管理 1.1.多 VPC 还是多账号模式 1.2.多账户模式,选择主 master 账号 二.系统架构安全 2.1.子网建议 2.2.每个可用区子网划分 2.3.安全组的建议 2. ...