具有以下服务构造函数

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

     }
}

使用.NET Core IOC机制传递参数的选择有哪些
_serviceCollection.AddSingleton<IOtherService , OtherService>();
_serviceCollection.AddSingleton<IAnotherOne , AnotherOne>();
_serviceCollection.AddSingleton<IService>(x=>new Service( _serviceCollection.BuildServiceProvider().GetService<IOtherService>(), _serviceCollection.BuildServiceProvider().GetService<IAnotherOne >(), "" ));

还有其他办法吗?

最佳答案

工厂委托(delegate)的表达式参数(在这种情况下为x)是IServiceProvider

用它来解决依赖关系,

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

工厂委托(delegate)是延迟调用。每当要解析类型时,它将通过完整的提供程序作为委托(delegate)参数。

10-07 13:44