对于这个容器注入,个人也不是很熟悉,很多还不懂,只会基本的操作,几天把它记录下来,说不定以后帮助就大了呢,这方面跟安卓差距还是挺大的

下面记录下应用的流程

步骤:

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. }
  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. }

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. }

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>

5.构造函数

  1. IUserManager uMan = null;
  2. public HomeController(IUserManager uMan)
  3. {
  4. this.uMan = uMan;
  5. }

五步走起,如果过程出错的话基本上都是配置文件配置出错,还有就是经常忘记更新dll类库,在这里要建议下把类库的输出路径改成到UI项目里,经常动手才会记忆深刻,一直在努力中,希望能走出自己的道路,虽然脆弱,却不退缩。

Ioc Autofac心得的更多相关文章

  1. 在asp.net web api 2 (ioc autofac) 使用 Serilog 记录日志

    Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里,我原来使用的是NLog,但 ...

  2. 开源项目 08 IOC Autofac

    using Autofac; using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  3. ioc autofac简单示例

    1.winform用法: nuget安装autofac public interface ILog { bool Log(string msg); } public class TXTLogger : ...

  4. asp.net core 四 IOC&DI Autofac

    其实关于IOC,DI已经有了很多的文章,但是自己在使用中还是有很多困惑,而且相信自己使用下,印象还是会比较深刻的 关于这段时间一直在学习.net core,但是这篇文章是比较重要的,也是我自己觉得学习 ...

  5. IOC容器-Autofac在MVC中实现json方式注入使用

    在你阅读时,默认已经了解IOC和autofac的基本用法, 我在最近的我的博客项目中运用了IOC autofac 实现了依赖注入 由于我的项目时asp.net MVC所以我目前向大家展示MVC中如何使 ...

  6. Topshelf的Ioc实现

    在前面使用Topshelf的文章里,我们的工作类TownCrier使用的是无参数的构造函数,满足测试的目的.在实际的开发过程中,我们常常需要使用带有参数的构造函数,就不可避免的使用Ioc的技术.在这里 ...

  7. autofac初识

    在开始autofac时,有必要先了解两个关键词:“控制反转(IoC/Inverse Of Control)”与“依赖注入(DI/Dependence injection)”. 控制反转(IoC):它把 ...

  8. never下ioc

    生命周期 当前分单例,作用域(范围),短暂.单例是整个服务中只有一个实例,短暂则是每一次得到的都是新的实例,作用域就是在该一套行动中内得到的是同一个实例,该行动中指的是什么?我们看看demo下的sta ...

  9. .Net 跨平台可移植类库正在进行

    [原文发表地址] Cross-Platform Portable Class Libraries with .NET are Happening [译文发表地址] .Net 跨平台可移植类库正在进行 ...

随机推荐

  1. Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十八】

    <Web 前端开发精华文章推荐>2013年第六期(总第十八期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...

  2. C语言中两位ASCII码可以表示汉字

    最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ******************************************************** ...

  3. Android通过xml文件配置数据库

    之前一段时间自己封装了两个数据库,一个是ORM数据库,另一个是事件流数据库,项目相应的地址如下: ORM数据库:https://github.com/wenjiang/SimpleAndroidORM ...

  4. HTML5的WebGL实现的3D和2D拓扑树

    在HT for Web中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在 ...

  5. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  6. 【转载】GPU 加速下的图像处理

    Instagram,Snapchat,Photoshop. 所有这些应用都是用来做图像处理的.图像处理可以简单到把一张照片转换为灰度图,也可以复杂到是分析一个视频,并在人群中找到某个特定的人.尽管这些 ...

  7. 基于MVC4+EasyUI的Web开发框架经验总结(9)--在Datagrid里面实现外键字段的转义操作

    我们在使用EasyUI的时候,很多情况下需要使用到表格控件datagrid,这个控件控件非常强大,使用起来很简洁,但是我在使用中,发现对于一个表里面的外键字段进行转义,并显示引用表的一些名称的操作,却 ...

  8. 再探OAuth2

    原文: http://www.cnblogs.com/Irving/p/4134629.html web:http://oauth.net/2/ rfc: http://tools.ietf.org/ ...

  9. Python语言and-or的用法

    [原]python语言的 and-or 常常被用来实现类C语言中的三元运算符 : ?   , 更为骚气的写法是  xxx and xxx or xxx and xxx or xxx,这样就可以可以做到 ...

  10. ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️html,js随笔。❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

    a标签本身的文字居中. a{ display:block; text-align:center; } 设置div1在另一个div2里居中,(写了左边margin 就别写右边了不然ie6有毛病,当然本身 ...