Browse Source

Allow to globally disable class interceptors.

pull/8914/head
Halil İbrahim Kalkan 5 years ago
parent
commit
ce89faebf9
  1. 22
      framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs
  2. 10
      framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionRegistrationActionExtensions.cs
  3. 2
      framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ServiceRegistrationActionList.cs

22
framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs

@ -35,7 +35,11 @@ namespace Autofac.Builder
return registrationBuilder;
}
private static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> InvokeRegistrationActions<TLimit, TActivatorData, TRegistrationStyle>(this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder, ServiceRegistrationActionList registrationActionList, Type serviceType, Type implementationType)
private static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> InvokeRegistrationActions<TLimit, TActivatorData, TRegistrationStyle>(
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder,
ServiceRegistrationActionList registrationActionList,
Type serviceType,
Type implementationType)
where TActivatorData : ReflectionActivatorData
{
var serviceRegistredArgs = new OnServiceRegistredContext(serviceType, implementationType);
@ -48,6 +52,7 @@ namespace Autofac.Builder
if (serviceRegistredArgs.Interceptors.Any())
{
registrationBuilder = registrationBuilder.AddInterceptors(
registrationActionList,
serviceType,
serviceRegistredArgs.Interceptors
);
@ -71,10 +76,12 @@ namespace Autofac.Builder
return registrationBuilder;
}
private static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> AddInterceptors<TLimit, TActivatorData, TRegistrationStyle>(
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder,
Type serviceType,
IEnumerable<Type> interceptors)
private static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle>
AddInterceptors<TLimit, TActivatorData, TRegistrationStyle>(
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder,
ServiceRegistrationActionList serviceRegistrationActionList,
Type serviceType,
IEnumerable<Type> interceptors)
where TActivatorData : ReflectionActivatorData
{
if (serviceType.IsInterface)
@ -83,6 +90,11 @@ namespace Autofac.Builder
}
else
{
if (serviceRegistrationActionList.IsClassInterceptorsDisabled)
{
return registrationBuilder;
}
(registrationBuilder as IRegistrationBuilder<TLimit, ConcreteReflectionActivatorData, TRegistrationStyle>)?.EnableClassInterceptors();
}

10
framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionRegistrationActionExtensions.cs

@ -28,6 +28,16 @@ namespace Microsoft.Extensions.DependencyInjection
return actionList;
}
public static void DisableAbpClassInterceptors(this IServiceCollection services)
{
GetOrCreateRegistrationActionList(services).IsClassInterceptorsDisabled = true;
}
public static bool IsAbpClassInterceptorsDisabled(this IServiceCollection services)
{
return GetOrCreateRegistrationActionList(services).IsClassInterceptorsDisabled;
}
// OnExposing

2
framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ServiceRegistrationActionList.cs

@ -5,6 +5,6 @@ namespace Volo.Abp.DependencyInjection
{
public class ServiceRegistrationActionList : List<Action<IOnServiceRegistredContext>>
{
public bool IsClassInterceptorsDisabled { get; set; }
}
}
Loading…
Cancel
Save