什么是AddSingleton,AddScoped,Add Transient C#Asp.net Core?

有三种方法可以在Startup.cs中注册依赖项。即AddSingleton,AddScoped和AddTransient。

添加单例

当我们将类型注册为单例时,整个应用程序和每个请求只有一个实例可用。

它类似于具有静态对象。

该实例是为第一个请求创建的,并且在整个应用程序以及每个后续请求中都可用。

public void ConfigureServices(IServiceCollection services){
   services.AddSingleton<ILog,Logger>()
}

添加范围

当我们将类型注册为Scoped时,每个请求在整个应用程序中都可以使用一个实例。收到新请求时,将创建新实例。添加作用域指定每个请求可用一个对象。

public void ConfigureServices(IServiceCollection services){
   services.AddScoped<ILog,Logger>()
}

添加瞬态

当我们将类型注册为Transient时,每次创建新实例。Transient为每个服务/控制器以及每个请求和每个用户创建新实例。

public void ConfigureServices(IServiceCollection services){
   services.AddTransient<ILog,Logger>()
}


参数添加单例添加范围添加瞬态
实例每个请求/每个用户相同。每个请求一个。每次都不同。
弃置应用程式关闭请求结束请求结束
用于需要Singleton实施时。每个用户具有不同行为的应用程序。轻量级和无状态服务。