如何为添加到依赖项中的注册服务指定服务生命周期 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)); } }
广告