小编典典

.NET Core DI,将参数传递给构造函数的方法

all

具有以下服务构造函数

public class Service : IService
{
     public Service(IOtherService service1, IAnotherOne service2, string arg)
     {    
     }
}

使用 .NET Core IOC 机制传递参数有哪些选择

services.AddSingleton<IOtherService , OtherService>();
services.AddSingleton<IAnotherOne , AnotherOne>();
services.AddSingleton<IService>(x =>
    new Service(
        services.BuildServiceProvider().GetService<IOtherService>(),
        services.BuildServiceProvider().GetService<IAnotherOne >(),
        ""));

还有其他方法吗?


阅读 190

收藏
2022-07-01

共1个答案

小编典典

工厂委托的表达式参数(在本例中为 x )是一个IServiceProvider.

使用它来解决依赖关系:

_serviceCollection.AddSingleton<IService>(x => 
    new Service(x.GetRequiredService<IOtherService>(),
                x.GetRequiredService<IAnotherOne>(), 
                ""));

工厂委托是延迟调用。每当要解析类型时,它将完整的提供者作为委托参数传递。

2022-07-01