Ioc Autofac心得
对于这个容器注入,个人也不是很熟悉,很多还不懂,只会基本的操作,几天把它记录下来,说不定以后帮助就大了呢,这方面跟安卓差距还是挺大的
下面记录下应用的流程
步骤:
1.添加应用
2.重写工厂(这里讲的是常用的构造方法注入方式)
1 public class CreateAutofacFactory : DefaultControllerFactory 2 { 3 public override IController CreateController(RequestContext requestContext, string controllerName) 4 { 5 //获取容器 6 IContainer ic = CreateControllers.CreateController().Icontainer; 7 //获取控制器类型 8 Type t = this.GetControllerType(requestContext, controllerName); 9 //从容器中解析出对象 10 return ic.Resolve(t) as IController; 11 } 12 }
View Code
1 public class CreateControllers 2 { 3 private CreateControllers() { } 4 private static CreateControllers createController; 5 public static CreateControllers CreateController() 6 { 7 if (createController == null) 8 createController = new CreateControllers(); 9 return createController; 10 } 11 private IContainer iContainer { get; set; } 12 public IContainer Icontainer 13 { 14 get 15 { 16 if (iContainer == null) 17 { 18 ContainerBuilder cb = new ContainerBuilder(); 19 //用代码注册类型 20 //cb.RegisterType<StudentDao>().As<IStudentDao>(); 21 //cb.RegisterType<StudentManager>().As<IStudentManager>(); 22 //cb.RegisterType<HomeController>(); 23 24 //从配置文件注册类型 25 cb.RegisterModule(new ConfigurationSettingsReader("autofac")); 26 iContainer = cb.Build();//创建容器 27 } 28 return iContainer; 29 } 30 } 31 }
View Code
3.启动(更换)工厂
1 public class MvcApplication : System.Web.HttpApplication 2 { 3 protected void Application_Start() 4 { 5 AreaRegistration.RegisterAllAreas(); 6 7 WebApiConfig.Register(GlobalConfiguration.Configuration); 8 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 9 RouteConfig.RegisterRoutes(RouteTable.Routes); 10 BundleConfig.RegisterBundles(BundleTable.Bundles); 11 12 //换ControllerFactory(服务器一启动就更换工厂) 13 ControllerBuilder.Current.SetControllerFactory(new CreateAutofacFactory()); 14 } 15 }
View Code
4.添加配置文件
1 <configSections> 2 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 3 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 4 5 <!--在配置文件中添加配置节点 name是配置节点的标签名 6 type是读取配置节点内容的类 格式:命名空间名.类名,程序集名--> 7 <section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/> 8 9 </configSections> 10 11 <autofac> 12 <components> 13 <component type="Winning.Tjgi.Backstage3G.UI.Controllers.HomeController,Winning.Tjgi.Backstage3G.UI" 14 /> 15 <component 16 type="test.Dal.UserDao,test.Dal" 17 service="test.IDal.IUserDao,test.IDal"/> 18 <component 19 type="test.Bll.UserManager,test.Bll" 20 service="test.IBll.IUserManager,test.IBll" /> 21 </components> 22 </autofac>
View Code
5.构造函数
1 IUserManager uMan = null; 2 public HomeController(IUserManager uMan) 3 { 4 this.uMan = uMan; 5 }
View Code
五步走起,如果过程出错的话基本上都是配置文件配置出错,还有就是经常忘记更新dll类库,在这里要建议下把类库的输出路径改成到UI项目里,经常动手才会记忆深刻,一直在努力中,希望能走出自己的道路,虽然脆弱,却不退缩。
转载于:https://www.cnblogs.com/LiuZhen/p/4023836.html
Ioc Autofac心得相关推荐
- 在asp.net web api 2 (ioc autofac) 使用 Serilog 记录日志
Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里,我原来使用的是NLog,但 ...
- Spring IOC学习心得之源码级分析ContextLoaderListener的作用(IOC容器初始化入口)
ContextLoaderListener类是负责初始化IOC容器,即在我们的web项目中,这里就是IOC容器初始化的入口,由这个类启动IOC容器的初始化. 它配置在web.xml中,比如如下配置: ...
- Spring IOC学习心得之IOC容器的初始化过程
注:本文大多数内容都是摘自<Spring技术内幕>这本书 简单来说,Ioc容器的初始化过程是在refresh()方法中启动的,包括BeanDefinition的Resource定位,载入和 ...
- Spring IOC学习心得之Bean对IOC容器的感知
容器管理的Bean一般不需要了解容器的状态和直接使用Bean,但是在某些情况下,是需要在Bean中直接对IOC容器进行操作的,这时候,就需要在Bean中设定对容器的感知.Spring IOC也提供了该 ...
- Spring IOC学习心得之BeanPostProcessor,BeanNameAware,BeanClassLoaderAware,BeanFactoryAware接口是如何起作用的
1. 首先说下BeanPostProcessor接口中的两个方法,如下: package org.springframework.beans.factory.config;import org.spr ...
- Spring IOC学习心得之注册bean的依赖关系
registerDependentBean方法的解析(注册bean的依赖关系) 源码如下: public void registerDependentBean(String beanName, Str ...
- java转net_将java库转换为.net库
动机: 充分利用java阵营众多的类库 工具: IKVM――把java bytecode 转换成IL程序,并提供大部分J2SE 1.4类的.net实现(IKVM.GNU.Classpath.dll) ...
- Asp.net MVC 仿照博客园的简单网站首页 列表设计
本来我打算采用ajax提交请求,异步的请求获取数据,但是我发现如果这样的话就会拖慢开发的进度,拖长时间.所以在这篇博客中仿照首页的列表设计其实和左侧列表网站分类采用了同样的方式,通过局部视图的方式呈现 ...
- .net mysql 变量_.net 数据库 全局变量
[全局数据库名.连接描述符] 连接描述符 网络连接目标的特殊格式的描述.连接描述符包含目标服务和网络路由信息.网络连接目标的特殊格式的描述.连接描述符包含:对于Oracle9i或Oracle8i数据库 ...
最新文章
- 碰上摩尔纹怎么办?这5招帮你解决!
- goland os.Open 路径错误
- 自定义圆环progressbar
- Python中断多重循环的几种思路
- rmd转换html怎么换页,如何在由RStudiomarkdown生成的单词文档中添加分页符
- 9个典型的开发者关系面试题
- c语言课程设计平时成绩,计算中心
- react-native props和state传值
- C++新特性探究(十五):bind
- Django之kindeditor
- openlayer 图层上下_OpenLayers 之 图层(Layers) 详解
- 如何防止驱动被恶意利用
- 中国Web信息博物馆
- 2021年scrapy一分钟内爬取笔趣阁整本小说存为txt|解决章节排序问题
- 串口调试助手中设置快捷键
- 视频剪辑工具,批量给视频添加上下图片
- 基于单片机温度自动控制系统设计-设计资料
- 二叉树构建的各种方法
- html动态下拉列表,jQuery实现动态显示select下拉列表数据的方法
- iris解决跨域问题
热门文章
- 百分比单位始终根据父元素相应值来计算_CSS Viewport 单位,很多人还不知道使用它来快速布局!...
- 【开源项目】基于FFmpeg的封装格式转换
- java 对象的态_Java面向对象-------多态总结
- Python3实现翻转二叉树问题
- android lable标签,android:label说明
- c语言字体取模软件下载,非常好用的lcd汉字取模软件下载_非常好用的lcd汉字取模软件官方下载-太平洋下载中心...
- 网络交换机的作用有哪些?
- 什么是E1接口,E1的使用注意事项
- 什么是DVI光端机?dvi光端机的优势有哪些?
- 【渝粤题库】陕西师范大学152210 现代社会调查理论与方法