mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-04-05 17:38:01 +08:00
46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Autofac;
|
|
using Autofac.Extensions.DependencyInjection;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace OpenAuth.WebApi.Test
|
|
{
|
|
/// <summary>
|
|
/// Based upon https://github.com/dotnet/aspnetcore/issues/14907#issuecomment-620750841 - only necessary because of an issue in ASP.NET Core
|
|
/// </summary>
|
|
public class CustomServiceProviderFactory : IServiceProviderFactory<ContainerBuilder>
|
|
{
|
|
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<IEnumerable<IStartupConfigureContainerFilter<ContainerBuilder>>>();
|
|
#pragma warning restore CS0612 // Type or member is obsolete
|
|
|
|
foreach (var filter in filters)
|
|
{
|
|
filter.ConfigureContainer(b => { })(containerBuilder);
|
|
}
|
|
|
|
return _wrapped.CreateServiceProvider(containerBuilder);
|
|
}
|
|
}
|
|
} |