Browse Source

Add `IApplicationConfigurationContributor` to DI automatically.

IApplicationConfigurationContributor
maliming 2 years ago
parent
commit
fbe1c108fc
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationOptions.cs
  2. 21
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs
  3. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
  4. 5
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
  5. 3
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TestApplicationConfigurationContributor.cs

5
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationOptions.cs

@ -1,13 +1,14 @@
using System.Collections.Generic;
using Volo.Abp.Collections;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public class AbpApplicationConfigurationOptions
{
public List<IApplicationConfigurationContributor> Contributors { get; }
public ITypeList<IApplicationConfigurationContributor> Contributors { get; }
public AbpApplicationConfigurationOptions()
{
Contributors = new List<IApplicationConfigurationContributor>();
Contributors = new TypeList<IApplicationConfigurationContributor>();
}
}

21
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs

@ -26,6 +26,7 @@ using Volo.Abp.ApiVersioning;
using Volo.Abp.Application;
using Volo.Abp.AspNetCore.Mvc.AntiForgery;
using Volo.Abp.AspNetCore.Mvc.ApiExploring;
using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
using Volo.Abp.AspNetCore.Mvc.ApplicationModels;
using Volo.Abp.AspNetCore.Mvc.Conventions;
using Volo.Abp.AspNetCore.Mvc.DataAnnotations;
@ -69,6 +70,8 @@ public class AbpAspNetCoreMvcModule : AbpModule
DynamicProxyIgnoreTypes.Add<ViewComponent>();
context.Services.AddConventionalRegistrar(new AbpAspNetCoreMvcConventionalRegistrar());
AutoAddApplicationConfigurationContributors(context.Services);
}
public override void ConfigureServices(ServiceConfigurationContext context)
@ -277,4 +280,22 @@ public class AbpAspNetCoreMvcModule : AbpModule
partManager.ApplicationParts.AddIfNotContains(moduleAssembly);
}
}
private static void AutoAddApplicationConfigurationContributors(IServiceCollection services)
{
var contributorTypes = new List<Type>();
services.OnRegistered(context =>
{
if (typeof(IApplicationConfigurationContributor).IsAssignableFrom(context.ImplementationType))
{
contributorTypes.Add(context.ImplementationType);
}
});
services.Configure<AbpApplicationConfigurationOptions>(options =>
{
options.Contributors.AddIfNotContains(contributorTypes);
});
}
}

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs

@ -112,7 +112,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
var context = new ApplicationConfigurationContributorContext(scope.ServiceProvider, result);
foreach (var contributor in _options.Contributors)
{
await contributor.ContributeAsync(context);
await scope.ServiceProvider.GetRequiredService(contributor).As<IApplicationConfigurationContributor>().ContributeAsync(context);
}
}
}

5
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs

@ -132,11 +132,6 @@ public class AbpAspNetCoreMvcTestModule : AbpModule
options.Maps.Add("SerialNumber", () => ClaimTypes.SerialNumber);
options.Maps.Add("DateOfBirth", () => ClaimTypes.DateOfBirth);
});
Configure<AbpApplicationConfigurationOptions>(options =>
{
options.Contributors.Add(new TestApplicationConfigurationContributor());
});
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)

3
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TestApplicationConfigurationContributor.cs

@ -1,9 +1,10 @@
using System.Threading.Tasks;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public class TestApplicationConfigurationContributor : IApplicationConfigurationContributor
public class TestApplicationConfigurationContributor : IApplicationConfigurationContributor, ITransientDependency
{
public Task ContributeAsync(ApplicationConfigurationContributorContext context)
{

Loading…
Cancel
Save