• AutoFac与ASP.NET MVC结合使用


    • MVC下的配置
    1. 通过NuGet安装AutoFac插件:Install-Package Autofac.Mvc5  
    2. 在Global中调用:
    var builder= new ContainerBuilder();
    //注册当前程序集中的所有controller;加上PropertiesAutowired()后,再可以使用属性注入
    builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
    Assembly asmService= Assembly.Load("TestService");
    //在bulider中获取不是抽象类的相关程序集;这块添加PropertiesAutowired()可以让接口调用其他接口,
    //实现接口间属性注入
    builder.RegisterAssemblyTypes(asmService)
    .Where(t => !t.IsAbstract).AsImplementedInterfaces().PropertiesAutowired();
    var container=builder.Build();
    //注册在DepandencyResolver中
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    • MVC下的使用
    1. 为自定义ModelBinder注入,还可以使用builder.RegisterModelBinders()等。

    2. 在Controller中只要声明Service的属性即可,AutoFac会自动完成属性注入

      public class DefaultController : Controller
      {
      public ZSZ.Common.IUserService userService { get; set; }
      // GET: Default
      public ActionResult Index()
      {
        return View();
      }
      }

      并且在ActionFilter中也可以这样使用属性注入

    3. 只有AutoFac创建的对象才有可能进行自动属性的赋值;但是在没有注入的地方,如果想获取对象,可以这样:

    ICityService cityService =DependencyResolver.Current.GetService<ICityService>()


      4. 如果在quartz等单独的线程中,无法通过DependencyResolver.Current.GetService<ICityService>()获取,可以使用

    var container = AutofacDependencyResolver.Current.ApplicationContainer;
    using (container.BeginLifetimeScope())
    {
        cityService = container.Resolve<ICityService>();
    }
  • 相关阅读:
    C#基础之方法参数
    Fiddler配置
    【转发】Webdriver使用自定义Firefox Profile运行测试
    WebDriver+TestNG的一个典型例子
    WebDriver获得表格里所有单元格的文本
    WebDriver中的Actions对象
    之前为dd写的一个小的demo(robotium)
    WebDriver一些常见问题的解决方法
    【转载】log4j详解使用
    TestNG学习地址分享
  • 原文地址:https://www.cnblogs.com/cuijl/p/6694192.html
Copyright © 2020-2023  润新知