注册依赖项
Builtin 容器具有一系列内置函数:
终身控制
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddTransient<ITestService, TestService>();
// or
services.AddScoped<ITestService, TestService>();
// or
services.AddSingleton<ITestService, TestService>();
// or
services.AddSingleton<ITestService>(new TestService());
}
- AddTransient :每次解析时创建
- AddScoped :每个请求创建一次
- AddSingleton :Lazily 为每个应用程序创建一次
AddSingleton(instance)
:为每个应用程序提供以前创建的实例
可枚举的依赖项
也可以注册可枚举的依赖项:
services.TryAddEnumerable(ServiceDescriptor.Transient<ITestService, TestServiceImpl1>());
services.TryAddEnumerable(ServiceDescriptor.Transient<ITestService, TestServiceImpl2>());
然后你可以按如下方式使用它们:
public class HomeController : Controller
{
public HomeController(IEnumerable<ITestService> services)
{
// do something with services.
}
}
通用依赖项
你还可以注册通用依赖项:
services.Add(ServiceDescriptor.Singleton(typeof(IKeyValueStore<>), typeof(KeyValueStore<>)));
然后按如下方式使用它:
public class HomeController : Controller
{
public HomeController(IKeyValueStore<UserSettings> userSettings)
{
// do something with services.
}
}