ServiceCollectionExtensions.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using Masuit.Tools.AspNetCore.ResumeFileResults.Executor;
  2. using Masuit.Tools.AspNetCore.ResumeFileResults.ResumeFileResult;
  3. using Masuit.Tools.Core.Net;
  4. using Masuit.Tools.Core.NoSQL;
  5. using Masuit.Tools.Files;
  6. using Masuit.Tools.NoSQL;
  7. using Microsoft.AspNetCore.Builder;
  8. using Microsoft.AspNetCore.Http;
  9. using Microsoft.AspNetCore.Mvc.Infrastructure;
  10. using Microsoft.Extensions.DependencyInjection;
  11. using Microsoft.Extensions.DependencyInjection.Extensions;
  12. namespace Masuit.Tools.Core.AspNetCore
  13. {
  14. /// <summary>
  15. /// 依赖注入ServiceCollection容器扩展方法
  16. /// </summary>
  17. public static class ServiceCollectionExtensions
  18. {
  19. /// <summary>
  20. /// 注入断点续传服务
  21. /// </summary>
  22. /// <param name="services"></param>
  23. /// <returns></returns>
  24. public static IServiceCollection AddResumeFileResult(this IServiceCollection services)
  25. {
  26. services.TryAddSingleton<IActionResultExecutor<ResumePhysicalFileResult>, ResumePhysicalFileResultExecutor>();
  27. services.TryAddSingleton<IActionResultExecutor<ResumeVirtualFileResult>, ResumeVirtualFileResultExecutor>();
  28. services.TryAddSingleton<IActionResultExecutor<ResumeFileStreamResult>, ResumeFileStreamResultExecutor>();
  29. services.TryAddSingleton<IActionResultExecutor<ResumeFileContentResult>, ResumeFileContentResultExecutor>();
  30. return services;
  31. }
  32. /// <summary>
  33. /// 注入7z压缩
  34. /// </summary>
  35. /// <param name="services"></param>
  36. /// <returns></returns>
  37. public static IServiceCollection AddSevenZipCompressor(this IServiceCollection services)
  38. {
  39. services.AddHttpClient();
  40. services.TryAddTransient<ISevenZipCompressor, SevenZipCompressor>();
  41. return services;
  42. }
  43. /// <summary>
  44. /// 注入一个本地化的RedisHelper
  45. /// </summary>
  46. /// <param name="services"></param>
  47. /// <returns></returns>
  48. public static IServiceCollection AddLocalRedisHelper(this IServiceCollection services)
  49. {
  50. return AddRedisHelper(services, "local");
  51. }
  52. /// <summary>
  53. /// 注入一个默认的RedisHelper实例
  54. /// </summary>
  55. /// <param name="services"></param>
  56. /// <param name="redisHost"></param>
  57. /// <returns></returns>
  58. public static IServiceCollection AddDefaultRedisHelper(this IServiceCollection services, string redisHost)
  59. {
  60. return AddRedisHelper(services, "default", redisHost);
  61. }
  62. /// <summary>
  63. /// 注入RedisHelper
  64. /// </summary>
  65. /// <param name="services"></param>
  66. /// <param name="name"></param>
  67. /// <param name="redisHost"></param>
  68. /// <returns></returns>
  69. public static IServiceCollection AddRedisHelper(this IServiceCollection services, string name, string redisHost = null)
  70. {
  71. RedisHelperFactory.ConnectionCache[name] = redisHost;
  72. services.TryAddTransient<RedisHelperFactory>();
  73. services.TryAddTransient(s => RedisHelper.GetInstance(redisHost));
  74. return services;
  75. }
  76. /// <summary>
  77. /// 注入HttpContext静态对象,方便在任意地方获取HttpContext,services.AddHttpContextAccessor();
  78. /// </summary>
  79. /// <param name="services"></param>
  80. public static void AddStaticHttpContext(this IServiceCollection services)
  81. {
  82. services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
  83. }
  84. /// <summary>
  85. /// 注入HttpContext静态对象,方便在任意地方获取HttpContext,app.UseStaticHttpContext();
  86. /// </summary>
  87. /// <param name="app"></param>
  88. /// <returns></returns>
  89. public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app)
  90. {
  91. var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
  92. HttpContext2.Configure(httpContextAccessor);
  93. return app;
  94. }
  95. }
  96. }