.NET Core 服务注册步骤总结

发布于:2024-06-18 ⋅ 阅读:(321) ⋅ 点赞:(0)

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<IMyService, CnService>(); 
    
    var app = builder.Build();
    
    ......
    
  3. 在控制器的构造方法中以参数的方式将接口注入到控制器中:

    private readonly IMyService _myService;
    private readonly ILogger<WeatherForecastController> _logger;
    
    // 自动创建 IMyService 和 ILogger 对象
    public WeatherForecastController(ILogger<WeatherForecastController> 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<IMyService, CnService>();
    
  3. 使用方式

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

      using (ServiceProvider sp = services.BuildServiceProvider())
      {
      	// 服务定位器模式
      	// 通过 GetRequiredService 获取 IMyService 对象
      	var ts1 = sp.GetRequiredService<IMyService>();
      	var ts2 = sp.GetRequiredService<IMyService>();
      	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")
      	}
      }
      

网站公告

今日签到

点亮在社区的每一天
去签到