註冊依賴項

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.
    }
}