註冊依賴項
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.
}
}