.net core控制台应用程序中的AddScoped和AddSingleton有什么区别?

Sub*_*cob 2 .net c# console-application .net-core

ASP.NET 上下文中的范围AddScoped是可以理解的,即在请求级别。当涉及到控制台应用程序时,它没有请求上下文,对吗?它将如何表现?

services.AddScoped<SomeServiceClass>(); services.AddSingleton<SomeServiceClass>();

Tim*_*aes 5

在控制台应用程序中,没有像 Web 上下文中那样的内置请求概念。因此,如果您在控制台应用程序中使用依赖项注入 (DI),则必须手动管理服务范围。

    using (var scope = serviceProvider.CreateScope())
{
    var service = scope.ServiceProvider.GetRequiredService<SomeServiceClass>();
    // use service here
}
Run Code Online (Sandbox Code Playgroud)

单例的行为会相同