【发布时间】:2022-11-22 16:11:19
【问题描述】:
如标题所述,当我注册IHostedService 的多个实例时,它会在第一个实例上调用StartAsync 两次,但不会在第二个实例上调用,但它会同时调用两个构造函数。
程序.cs
services.AddSingleton<IHostedService, ProductService>(provider => (ProductService)provider.GetService<IProductService>()!);
services.AddSingleton<IProductService, ProductService>();
services.AddSingleton<IHostedService, ProductService>(provider => (ProductService)provider.GetService<IProductService>()!);
services.AddSingleton<IProductService, ProductService>();
产品服务.cs
public class ProductService : IProductService, IHostedService
{
public async Task StartAsync(CancellationToken cancellationToken) { }
public async Task StopAsync(CancellationToken cancellationToken) { }
}
我该如何解决这个问题?我需要 ProductService 的多个实例(为简单起见更改了名称)。
【问题讨论】:
标签: c# .net dependency-injection