IWebHostBuilderExtensions_AddConfigure.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 IWebHostBuilderExtensions_AddConfigure
  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. ///
  25. /// </summary>
  26. /// <param name="builder"></param>
  27. /// <param name="beforeConfig"></param>
  28. /// <param name="afterConfig"></param>
  29. /// <returns></returns>
  30. public static IWebHostBuilder AddConfigure(this IWebHostBuilder builder, Action<IApplicationBuilder> beforeConfig=null, Action<IApplicationBuilder> afterConfig=null)
  31. {
  32. return builder.ConfigureServices(services=> {
  33. services.AddTransient<IStartupFilter>(m=> {
  34. return new AutoRequestServicesStartupFilter { beforeConfig = beforeConfig , afterConfig = afterConfig };
  35. });
  36. });
  37. }
  38. }
  39. }