ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1609字,纯文字阅读大概需要3分钟。
内容图文
IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法..
一直憋着没写ASP.NET Core的文章..还是怕误导大家..
今天这篇也不是讲Core的
前面写了C#开发移动应用系列 就第一篇和最后一篇上了最多推荐 - - 也许大家确实不看好吧..
算了..废话不多说.开始今天的东西吧..
本篇文章不讲为何我们要用IOC..只讲Autofac使用中的一些小心得
1.基本注入
首先我们要构造一个容器,代码如下:
// 第一步: 构造一个AutoFac的builder容器 ContainerBuilder builder = new ContainerBuilder();
第二步..注入自己需要的服务和继承关系. 类似下面:
// 注入仓储 builder.RegisterGeneric(typeof(Repository<,>)).As(typeof(IRepository<,>)).InstancePerLifetimeScope();
嗯..这里解释一下是什么意思..
RegisterGeneric 注入你的服务类,后面的As则是你服务类继承的接口.
InstancePerLifetimeScope为你注入的这个服务的生命周期.(注:生命周期我们后面讲)
2.控制器注入
采用属性注入的方式,注入控制器
// 注入控制控制器 builder.RegisterControllers(assemblys.ToArray()).PropertiesAutowired().InstancePerLifetimeScope();
嗯..这里面的assemblys.ToArray().. 就是一些你要注入到控制器里面的程序集..
嗯 我是直接通过统一接口 然后批量注入..你们自己随意..
PropertiesAutowired()的意思就是采用属性注入的方式
3.特性注入
我们在使用MVC的时候,肯定会用到特性..肯定会有一些自己定义的特性..那么这些特性里面要用到相关的服务,该怎么注入呢..如下:
// 注入特性 builder.RegisterFilterProvider();
是的.. 你没看错..MVC里面就一句话就行了..特性里面就可以取到想要的服务了..(注:WebAPI不可以,具体请查官方文档)
4.生成容器并提供给MVC
代码如下:
// 通过容器配置生成容器. var container = builder.Build(); //提供给MVC DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
5.一些杂七杂八
// 注入类用这个 builder.RegisterType(要注入的类型) // 注入泛型类用这个 builder.RegisterGeneric(要注入的类型)
6.关于生命周期
InstancePerDependency()
瞬时,嗯..就是服务对于每次请求都会返回单独的实例
InstancePerLifetimeScope()
基于线程或者请求的单例..嗯 就是一个请求 或者一个线程 共用一个
SingleInstance()
嗯..没别的 就是单例.. 整个项目公用一个
InstancePerRequest()
嗯..针对MVC的,或者说是ASP.NET的..每个请求单例
到此就结束了.
嗯..内容不多,胜在实用..分享一下吧, 有问题的地方希望大神指正一下,也顺便是自己的一个记录吧..
原文:http://www.cnblogs.com/GuZhenYin/p/7132650.html
内容总结
以上是互联网集市为您收集整理的ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)全部内容,希望文章能够帮你解决ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。