ServiceProviderAccessor.cs 729 B

123456789101112131415161718192021222324252627282930
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Microsoft.Extensions.DependencyInjection;
  5. namespace Grpc.Extension.Common.Internal
  6. {
  7. /// <summary>
  8. /// ServiceProviderAccessor
  9. /// </summary>
  10. public class ServiceProviderAccessor
  11. {
  12. public static IServiceProvider ServiceProvider { get; private set; }
  13. public static void SetServiceProvider(IServiceProvider sp)
  14. {
  15. ServiceProvider = sp;
  16. }
  17. public static T GetService<T>()
  18. {
  19. return ServiceProvider.GetService<T>();
  20. }
  21. public static List<T> GetServices<T>()
  22. {
  23. return ServiceProvider.GetServices<T>()?.ToList();
  24. }
  25. }
  26. }