如何为添加到依赖项中的注册服务指定服务生命周期 C# Asp.net Core?


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

内置 IoC 容器支持三种生命周期−

单例 − 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));
   }
}

更新于:2020-9-25

555 人阅读

开启你的 职业 生涯

完成课程以获得认证

开始
广告