如何为添加到依赖项中的注册服务指定服务生命周期 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));
}
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP