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

csharpserver side programmingprogramming更新于 2025/6/26 8:52:17

内置 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())); // 单例
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.Transient)); // 瞬态
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.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));
   }
}

相关文章