zoukankan      html  css  js  c++  java
  • .netCore下的依赖注入扩展 -- AutoFac

    使用AutoFac实现依赖注入我们需要引用一下两个Nuget包

     接下来就是我们替换Asp.netCore默认为我们实现的依赖注入功能了。如果对core默认实现不清楚的朋友可以点此连接查看

    使用构造函数注入

    看下代码:

      public interface IUser
        {
            string GetName();
        }
        public class User : IUser
        {
            public string GetName()
            {
                return "User1";
            }
        }

    User是要注入的对象。接下来是修改StartUp类中ConfigureServices方法

       public void ConfigureServices(IServiceCollection services)
            {
    
    
            }

     我们把Void返回值替换成IServiceProvider。

     public IServiceProvider ConfigureServices(IServiceCollection services)
            {
    
                var containerBuilder= new ContainerBuilder();
                containerBuilder.RegisterType<User>().As <IUser>();
                containerBuilder.Populate(services);
                var container = containerBuilder.Build();
                return new AutofacServiceProvider(container);
    
             
               
            }

    我们配置好StatUp类接下来就是使用注入的User对象了。在此我使用MVC里的Controller演示

      public class HomeController : Controller
    {
            public IUser _user { get; set; }
            public HomeController(IUser user) {
                _user = user;
            }
             public IActionResult Index()
            {
                 _user.GetName();
                return View();
            }
    }

    就这样我们完成了AutoFac的构造函数注入。AutoFac不仅仅有RegisterType注入方式,比如可以通过模块化的方式注入

    StartUp中ConfigureServices方法:

    containerBuilder.RegisterModule<AspCoreMVCIdentityDemo.AutoFac.AutoFacModule>();
     public class AutoFacModule:Module
        {
            protected override void Load(ContainerBuilder builder)
            {
                builder.RegisterType<User>().As<IUser>();
           } }
  • 相关阅读:
    分时区查询问题解决
    .htaccess伪静态实例分享
    net mvc 小目标
    PHP中钩子函数的实现与认识
    session
    修改net基本三层 动软生产
    格式化问题
    数据字典
    关联数据和formatter问题-easyui+微型持久化工具
    说说JSON和JSONP,也许你会豁然开朗
  • 原文地址:https://www.cnblogs.com/LahGo/p/8933823.html
Copyright © 2011-2022 走看看