• .NET Core 服务注册步骤总结


    image

    总结一下 .NET Core 服务注册的步骤:

    .NET Core Web Api 项目服务注册步骤:

    1. 创建一个接口,和实现类

      比如:IMyService, CnService

    2. 在 Program.cs 的 var app = builder.Build(); 语句之前加上:

      var builder = WebApplication.CreateBuilder(args);
      
      ......
      
      //注册服务
      builder.Services.AddScoped(); 
      
      var app = builder.Build();
      
      ......
      
    3. 控制器的构造方法中以参数的方式将接口注入到控制器中:

      private readonly IMyService _myService;
      private readonly ILogger _logger;
      
      // 自动创建 IMyService 和 ILogger 对象
      public WeatherForecastController(ILogger logger, IMyService myService)
      {
      	_logger = logger;
      	_myService = myService;
      }
      

    .NET Core Console 项目服务注册步骤:

    1. 创建一个接口,和实现类

      比如:IMyService, CnService

    2. 在 Program.cs 中创建 ServiceCollection 对象,然后使用 AddScoped / AddSingleton / AddTransient 等方法注入服务

      using Microsoft.Extensions.DependencyInjection;
      
      ServiceCollection services = new ServiceCollection();
      services.AddTransient();
      
    3. 使用方式

      1. 在 Program.cs 文件中通过 GetRequiredService 获取对象,调用对象的方法

        using (ServiceProvider sp = services.BuildServiceProvider())
        {
        	// 服务定位器模式
        	// 通过 GetRequiredService 获取 IMyService 对象
        	var ts1 = sp.GetRequiredService();
        	var ts2 = sp.GetRequiredService();
        	Console.WriteLine(Object.ReferenceEquals(ts1, ts2));
        
        	ts1.Name = "tom";
        	ts1.SayHi();
        }
        
      2. 在其他类中使用,和 Web Api 一样,在类的构造方法中直接注入,如:

        class Demo
        {
        	private readonly IMyService _myService;
        
        	// 构造方法注入 IOptionsSnapshot
        	public Demo(IMyService myService)
        	{
        		_myService = myService;
        	}
        
        	public void Test()
        	{
        		_myService.SayHi("Jacky")
        	}
        }
        
  • 相关阅读:
    K8S:HPA pod水平自动伸缩
    2.7 配置Keepalived提高吞吐量
    IoC & DI
    系统篇: uboot 启动流程
    键鼠自动化2.0展示
    使用sysctl调优Linux内核
    「Python入门」Python代码规范(风格)
    Blend for Visual Studio简介
    感冒了吃抗生素有用吗?
    一图搞懂傅里叶变换(FT)、DTFT、DFS和DFT之间的关系
  • 原文地址:https://blog.csdn.net/yangshuquan/article/details/139637752