具有以下服务构造函数
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 >(), ""));
还有其他方法吗?
工厂委托的表达式参数(在本例中为 x )是一个IServiceProvider.
IServiceProvider
使用它来解决依赖关系:
_serviceCollection.AddSingleton<IService>(x => new Service(x.GetRequiredService<IOtherService>(), x.GetRequiredService<IAnotherOne>(), ""));
工厂委托是延迟调用。每当要解析类型时,它将完整的提供者作为委托参数传递。