• 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>();
    }
  • 相关阅读:
    iOS resign code with App Store profile and post to AppStore
    HTTPS科普扫盲帖 对称加密 非对称加密
    appid 评价
    使用Carthage安装第三方Swift库
    AngularJS:何时应该使用Directive、Controller、Service?
    xcode7 The operation couldn't be completed.
    cocoapods pod install 安装报错 is not used in any concrete target
    xcode7 NSAppTransportSecurity
    learning uboot how to set ddr parameter in qca4531 cpu
    learning uboot enable protect console
  • 原文地址:https://www.cnblogs.com/cuijl/p/6694192.html
Copyright © 2020-2023  润新知