如何为作为依赖项C#Asp.net Core添加的注册服务指定服务寿命?

内置的IoC容器管理已注册服务类型的生命周期。它根据指定的生存期自动处理服务实例。

内置的IoC容器支持三种寿命-

Singleton -IoC容器将在应用程序的整个生命周期中创建和共享服务的单个实例。

瞬态-每次您请求时,IoC容器都会创建一个指定服务类型的新实例。

范围-IoC容器将为每个请求创建一次指定服务类型的实例,并将在单个请求中共享。

示例

public interface ILog{
   void info(string str);
}
class MyConsoleLogger : ILog{
   public void info(string str){
      Console.WriteLine(str);
   }
}
public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.Add(new ServiceDescriptor(typeof(ILog), new
      MyConsoleLogger())); // singleton
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.Transient)); // Transient
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.Scoped)); // Scoped
   }
}

以下示例显示了使用扩展方法注册类型(服务)的方法。

public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.AddSingleton<ILog, MyConsoleLogger>();
      services.AddSingleton(typeof(ILog), typeof(MyConsoleLogger));
      services.AddTransient<ILog, MyConsoleLogger>();
      services.AddTransient(typeof(ILog), typeof(MyConsoleLogger));
      services.AddScoped<ILog, MyConsoleLogger>();
      services.AddScoped(typeof(ILog), typeof(MyConsoleLogger));
   }
}