2
0

GithubScanBuilderExtensions.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Threading.Tasks;
  3. namespace FastGithub.Scanner
  4. {
  5. /// <summary>
  6. /// 中间件创建者扩展
  7. /// </summary>
  8. static class GithubScanBuilderExtensions
  9. {
  10. /// <summary>
  11. /// 使用中间件
  12. /// </summary>
  13. /// <typeparam name="TMiddleware"></typeparam>
  14. /// <param name="builder"></param>
  15. /// <returns></returns>
  16. public static IGithubScanBuilder Use<TMiddleware>(this IGithubScanBuilder builder) where TMiddleware : class, IGithubScanMiddleware
  17. {
  18. return builder.AppServices.GetService(typeof(TMiddleware)) is TMiddleware middleware
  19. ? builder.Use(middleware.InvokeAsync)
  20. : throw new InvalidOperationException($"无法获取服务{typeof(TMiddleware)}");
  21. }
  22. /// <summary>
  23. /// 使用中间件
  24. /// </summary>
  25. /// <typeparam name="TContext"></typeparam>
  26. /// <param name="builder"></param>
  27. /// <param name="middleware"></param>
  28. /// <returns></returns>
  29. public static IGithubScanBuilder Use(this IGithubScanBuilder builder, Func<GithubContext, Func<Task>, Task> middleware)
  30. {
  31. return builder.Use(next => context => middleware(context, () => next(context)));
  32. }
  33. }
  34. }