|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using Autofac.Core; |
|
|
|
using Autofac.Extras.DynamicProxy; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Volo.Abp.Autofac; |
|
|
|
using Volo.Abp.Castle.DynamicProxy; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
@ -14,26 +15,20 @@ public static class AbpRegistrationBuilderExtensions |
|
|
|
{ |
|
|
|
public static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> ConfigureAbpConventions<TLimit, TActivatorData, TRegistrationStyle>( |
|
|
|
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder, |
|
|
|
ServiceDescriptor serviceDescriptor, |
|
|
|
IModuleContainer moduleContainer, |
|
|
|
ServiceRegistrationActionList registrationActionList, |
|
|
|
List<Action<IOnServiceActivatedContext>> serviceActivatedActions) |
|
|
|
ServiceActivatedActionList serviceActivatedActions) |
|
|
|
where TActivatorData : ReflectionActivatorData |
|
|
|
{ |
|
|
|
registrationBuilder = registrationBuilder.InvokeActivatedActions(serviceActivatedActions, serviceDescriptor); |
|
|
|
|
|
|
|
var serviceType = registrationBuilder.RegistrationData.Services.OfType<IServiceWithType>().FirstOrDefault()?.ServiceType; |
|
|
|
if (serviceType == null) |
|
|
|
{ |
|
|
|
return registrationBuilder; |
|
|
|
} |
|
|
|
|
|
|
|
registrationBuilder.OnActivated(context => |
|
|
|
{ |
|
|
|
var serviceActivatedContext = new OnServiceActivatedContext(context.Instance!); |
|
|
|
foreach (var action in serviceActivatedActions) |
|
|
|
{ |
|
|
|
action.Invoke(serviceActivatedContext); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
var implementationType = registrationBuilder.ActivatorData.ImplementationType; |
|
|
|
if (implementationType == null) |
|
|
|
{ |
|
|
|
@ -46,6 +41,24 @@ public static class AbpRegistrationBuilderExtensions |
|
|
|
return registrationBuilder; |
|
|
|
} |
|
|
|
|
|
|
|
private static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> InvokeActivatedActions<TLimit, TActivatorData, TRegistrationStyle>( |
|
|
|
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder, |
|
|
|
ServiceActivatedActionList serviceActivatedActions, |
|
|
|
ServiceDescriptor serviceDescriptor) |
|
|
|
where TActivatorData : ReflectionActivatorData |
|
|
|
{ |
|
|
|
registrationBuilder.OnActivated(context => |
|
|
|
{ |
|
|
|
var serviceActivatedContext = new OnServiceActivatedContext(context.Instance!); |
|
|
|
foreach (var action in serviceActivatedActions.GetActions(serviceDescriptor)) |
|
|
|
{ |
|
|
|
action.Invoke(serviceActivatedContext); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
return registrationBuilder; |
|
|
|
} |
|
|
|
|
|
|
|
private static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> InvokeRegistrationActions<TLimit, TActivatorData, TRegistrationStyle>( |
|
|
|
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder, |
|
|
|
ServiceRegistrationActionList registrationActionList, |
|
|
|
|