ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)
2021-07-01 12:05
标签:set tor href eof pos gis 生命周期 仓储 结束 IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法.. 一直憋着没写ASP.NET Core的文章..还是怕误导大家.. 今天这篇也不是讲Core的 前面写了C#开发移动应用系列 就第一篇和最后一篇上了最多推荐 - - 也许大家确实不看好吧.. 算了..废话不多说.开始今天的东西吧.. 本篇文章不讲为何我们要用IOC..只讲Autofac使用中的一些小心得 首先我们要构造一个容器,代码如下: 第二步..注入自己需要的服务和继承关系. 类似下面: 嗯..这里解释一下是什么意思.. RegisterGeneric 注入你的服务类,后面的As则是你服务类继承的接口. InstancePerLifetimeScope为你注入的这个服务的生命周期.(注:生命周期我们后面讲) 采用属性注入的方式,注入控制器 嗯..这里面的assemblys.ToArray().. 就是一些你要注入到控制器里面的程序集.. 嗯 我是直接通过统一接口 然后批量注入..你们自己随意.. PropertiesAutowired()的意思就是采用属性注入的方式 我们在使用MVC的时候,肯定会用到特性..肯定会有一些自己定义的特性..那么这些特性里面要用到相关的服务,该怎么注入呢..如下: 是的.. 你没看错..MVC里面就一句话就行了..特性里面就可以取到想要的服务了..(注:WebAPI不可以,具体请查官方文档) 代码如下: InstancePerDependency() 瞬时,嗯..就是服务对于每次请求都会返回单独的实例 InstancePerLifetimeScope() 基于线程或者请求的单例..嗯 就是一个请求 或者一个线程 共用一个 SingleInstance() 嗯..没别的 就是单例.. 整个项目公用一个 InstancePerRequest() 嗯..针对MVC的,或者说是ASP.NET的..每个请求单例 到此就结束了. 嗯..内容不多,胜在实用..分享一下吧, 有问题的地方希望大神指正一下,也顺便是自己的一个记录吧.. ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入) 标签:set tor href eof pos gis 生命周期 仓储 结束 原文地址:http://www.cnblogs.com/GuZhenYin/p/7132650.html1.基本注入
//第一步: 构造一个AutoFac的builder容器
ContainerBuilder builder = new ContainerBuilder();
//注入仓储
builder.RegisterGeneric(typeof(Repository)).As(typeof(IRepository)).InstancePerLifetimeScope();
2.控制器注入
//注入控制控制器
builder.RegisterControllers(assemblys.ToArray()).PropertiesAutowired().InstancePerLifetimeScope();
3.特性注入
//注入特性
builder.RegisterFilterProvider();
4.生成容器并提供给MVC
//通过容器配置生成容器.
var container = builder.Build();
//提供给MVC
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
5.一些杂七杂八
//注入类用这个
builder.RegisterType(要注入的类型)
//注入泛型类用这个
builder.RegisterGeneric(要注入的类型)
6.关于生命周期
上一篇:thinkphp处理缓存
下一篇:phpStorm格式化代码快捷键
文章标题:ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)
文章链接:http://soscw.com/index.php/essay/100308.html