|
|
|
@ -24,7 +24,11 @@ |
|
|
|
// OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
|
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using JetBrains.Annotations; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Volo.Abp; |
|
|
|
|
|
|
|
namespace Autofac.Extensions.DependencyInjection |
|
|
|
{ |
|
|
|
@ -41,7 +45,23 @@ namespace Autofac.Extensions.DependencyInjection |
|
|
|
/// <returns>The service collection.</returns>
|
|
|
|
public static IServiceCollection AddAutofac(this IServiceCollection services, Action<ContainerBuilder> configurationAction = null) |
|
|
|
{ |
|
|
|
return services.AddSingleton<IServiceProviderFactory<ContainerBuilder>>(new AutofacServiceProviderFactory(configurationAction)); |
|
|
|
return services |
|
|
|
.ClearServiceProviderFactories() |
|
|
|
.AddSingleton<IServiceProviderFactory<ContainerBuilder>>(new AutofacServiceProviderFactory(configurationAction)); |
|
|
|
} |
|
|
|
|
|
|
|
private static IServiceCollection ClearServiceProviderFactories([NotNull] this IServiceCollection services) |
|
|
|
{ |
|
|
|
Check.NotNull(services, nameof(services)); |
|
|
|
|
|
|
|
services.RemoveAll( |
|
|
|
service => service.ImplementationInstance? |
|
|
|
.GetType() |
|
|
|
.GetInterfaces() |
|
|
|
.Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IServiceProviderFactory<>)) == true |
|
|
|
); |
|
|
|
|
|
|
|
return services; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|