public FunctionsServiceProvider(IServiceCollection descriptors) { _root = new Container(rules => _defaultContainerRules); _root.Populate(descriptors); _root.UseInstance <IServiceProvider>(this); _root.UseInstance <FunctionsServiceProvider>(this); _currentResolver = new FunctionsResolver(_root); }
internal void UpdateChildServices(IServiceCollection serviceDescriptors) { var rules = _defaultContainerRules .WithUnknownServiceResolvers(request => new DelegateFactory(_ => _root.Resolve(request.ServiceType, IfUnresolved.ReturnDefault))); var resolver = new Container(rules); resolver.Populate(serviceDescriptors); var previous = _currentResolver; _currentResolver = new FunctionsResolver(resolver); if (!ReferenceEquals(previous.Container, _root)) { previous.Dispose(); } }