正如标题所述,当我注册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
的多个示例(为简单起见,更改了名称)。
1条答案
按热度按时间d5vmydt91#
您可以使用工厂来维护n个示例。
可以使用工厂不启动。