zoukankan      html  css  js  c++  java
  • 一个非常简单的入门级ASP.NET Core Autofac使用

    好好学习,天天向上。

    这是结构。

     方法一 在Program中,添加Autofac服务

    1:

     1         public static void Main(string[] args)
     2         {
     3             CreateHostBuilder(args).Build().Run();
     4         }
     5         //    public static IHostBuilder CreateHostBuilder(string[] args) =>
     6         //Host.CreateDefaultBuilder(args)
     7         //    .ConfigureWebHostDefaults(webBuilder =>
     8         //    {
     9         //        webBuilder.UseStartup<Startup>();
    10         //    }).UseServiceProviderFactory(new AutofacServiceProviderFactory());
    11         public static IHostBuilder CreateHostBuilder(string[] args) =>
    12             Host.CreateDefaultBuilder(args)
    13             .UseServiceProviderFactory(new AutofacServiceProviderFactory())//添加Autofac服务
    14                 .ConfigureWebHostDefaults(webBuilder =>
    15                 {
    16                     webBuilder.UseStartup<Startup>();
    17                 });

    2: Startup类修改ConfigureContainer方法

    1   public void ConfigureContainer(ContainerBuilder builder)
    2         {
    3           builder.RegisterType<OneService>().As<IOneService>(); 
    4         }

    方法二,  继承module 

    1. 创建CustomAutofacModule 类

     1  public class CustomAutofacModule :Autofac.Module
     2     {
     3         /// <summary>
     4         /// AutoFac注册类
     5         /// </summary>
     6         /// <param name="builder"></param>
     7         protected override void Load(ContainerBuilder builder)
     8         {
     9             /*单次注入*/
    10             builder.RegisterType<OneService>().As<IService>();
    11            14         }
    15        24     }

    2: Startup类修改ConfigureContainer方法

      public void ConfigureContainer(ContainerBuilder builder)
            {
                // 直接用Autofac注册我们自定义的 
                //
                builder.RegisterModule(new CustomAutofacModule());
    
            }

    批量注入

    修改CustomAutofacModule 类 

     1  public class CustomAutofacModule :Autofac.Module
     2     {
     3         /// <summary>
     4         /// AutoFac注册类
     5         /// </summary>
     6         /// <param name="builder"></param>
     7         protected override void Load(ContainerBuilder builder)
     8         {
     9             ///*单次注入*/
    10             //builder.RegisterType<OneService>().As<IService>();
    11             //注册Service中的对象,Service中的类要以Service结尾,否则注册失败
    12             builder.RegisterAssemblyTypes(GetAssemblyByName("Services")).
    13                 Where(a => a.Name.EndsWith("Service")).AsImplementedInterfaces();
    14         }
    15         /// <summary>
    16         /// 根据程序集名称获取程序集
    17         /// </summary>
    18         /// <param name="AssemblyName">程序集名称</param>
    19         /// <returns></returns>
    20         public static Assembly GetAssemblyByName(String AssemblyName)
    21         {
    22             return Assembly.Load(AssemblyName);
    23         }
    24     }

    之后再控制器注入调用一下就好(接口方法就自己去随便定义一下了,这只是一个初级入门。)

     1     public class HomeController : Controller
     2     {
     3         private readonly ILogger<HomeController> _logger;
     4         private readonly IOneService _server;
     5         private readonly IArticleService _articleService;
     6 
     7         public HomeController(ILogger<HomeController> logger, IOneService service, IArticleService articleService)
     8         {
     9             _logger = logger;
    10             _server = service;
    11             _articleService = articleService;
    12         }
    13 
    14         public IActionResult Index()
    15         {
    16             string a = _server.SayHi();
    17             string b = _articleService.article();
    18             return View();
    19         }
    20 
    21       
    22     }

    不知道如何深入学习, 有哪位能够指点一下学习道路。感激不尽

  • 相关阅读:
    使用国内镜像安装pyqt5
    python线程池 ThreadPoolExecutor 的用法及实战
    进程和线程、协程的区别
    python线程池实现
    python 多进程使用总结
    参与开源项目
    脑图——前端技术
    HTML中DTD使用小结
    浅谈面向对象——追溯法
    Dva.js 里面的几个概念
  • 原文地址:https://www.cnblogs.com/Cjb8973/p/13858902.html
Copyright © 2011-2022 走看看