Browse Source

Add `InvokeActivatedActions` method.

pull/18259/head
maliming 2 years ago
parent
commit
9496cfb86f
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 33
      framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs
  2. 6
      framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacRegistration.cs

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

@ -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,

6
framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacRegistration.cs

@ -189,8 +189,6 @@ public static class AutofacRegistration
{
if (descriptor.ImplementationType != null)
{
var activatedActions = activatedActionList.GetActions(descriptor);
// Test if the an open generic type is being registered
var serviceTypeInfo = descriptor.ServiceType.GetTypeInfo();
if (serviceTypeInfo.IsGenericTypeDefinition)
@ -199,7 +197,7 @@ public static class AutofacRegistration
.RegisterGeneric(descriptor.ImplementationType)
.As(descriptor.ServiceType)
.ConfigureLifecycle(descriptor.Lifetime, lifetimeScopeTagForSingletons)
.ConfigureAbpConventions(moduleContainer, registrationActionList, activatedActions);
.ConfigureAbpConventions(descriptor, moduleContainer, registrationActionList, activatedActionList);
}
else
{
@ -207,7 +205,7 @@ public static class AutofacRegistration
.RegisterType(descriptor.ImplementationType)
.As(descriptor.ServiceType)
.ConfigureLifecycle(descriptor.Lifetime, lifetimeScopeTagForSingletons)
.ConfigureAbpConventions(moduleContainer, registrationActionList, activatedActions);
.ConfigureAbpConventions(descriptor, moduleContainer, registrationActionList, activatedActionList);
}
}
else if (descriptor.ImplementationFactory != null)

Loading…
Cancel
Save