using System; using System.Collections.Generic; using Autofac; using Autofac.Extensions.DependencyInjection; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; namespace OpenAuth.WebApi.Test { /// /// Based upon https://github.com/dotnet/aspnetcore/issues/14907#issuecomment-620750841 - only necessary because of an issue in ASP.NET Core /// public class CustomServiceProviderFactory : IServiceProviderFactory { private AutofacServiceProviderFactory _wrapped; private IServiceCollection _services; public CustomServiceProviderFactory() { _wrapped = new AutofacServiceProviderFactory(); } public ContainerBuilder CreateBuilder(IServiceCollection services) { // Store the services for later. _services = services; return _wrapped.CreateBuilder(services); } public IServiceProvider CreateServiceProvider(ContainerBuilder containerBuilder) { var sp = _services.BuildServiceProvider(); #pragma warning disable CS0612 // Type or member is obsolete var filters = sp.GetRequiredService>>(); #pragma warning restore CS0612 // Type or member is obsolete foreach (var filter in filters) { filter.ConfigureContainer(b => { })(containerBuilder); } return _wrapped.CreateServiceProvider(containerBuilder); } } }