IServiceCollectionExtensions_ConfigureApp.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.AspNetCore.Hosting;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. namespace Vit.Extensions
  6. {
  7. public static partial class IServiceCollectionExtensions_ConfigureApp
  8. {
  9. public class AutoRequestServicesStartupFilter : IStartupFilter
  10. {
  11. public Action<IApplicationBuilder> beforeConfig;
  12. public Action<IApplicationBuilder> afterConfig;
  13. public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
  14. {
  15. return builder =>
  16. {
  17. beforeConfig?.Invoke(builder);
  18. next(builder);
  19. afterConfig?.Invoke(builder);
  20. };
  21. }
  22. }
  23. /// <summary>
  24. /// 添加app配置的同时不停用其他app配置。(调用IWebHostBuilder.Configure函数会停用掉之前的配置,仅最后一次生效)
  25. /// </summary>
  26. /// <param name="services"></param>
  27. /// <param name="beforeConfig"></param>
  28. /// <param name="afterConfig"></param>
  29. /// <returns></returns>
  30. public static IServiceCollection ConfigureApp(this IServiceCollection services, Action<IApplicationBuilder> beforeConfig = null, Action<IApplicationBuilder> afterConfig = null)
  31. {
  32. return services?.AddTransient<IStartupFilter>(m =>
  33. {
  34. return new AutoRequestServicesStartupFilter { beforeConfig = beforeConfig, afterConfig = afterConfig };
  35. });
  36. }
  37. }
  38. }