如何为已添加为依赖项的 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)); } }