WebExtension.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using FastExpressionCompiler;
  2. using Microsoft.AspNetCore.Http;
  3. using Newtonsoft.Json;
  4. using System.Linq.Expressions;
  5. namespace Masuit.Tools.Core.Net
  6. {
  7. /// <summary>
  8. /// Web操作扩展
  9. /// </summary>
  10. public static class WebExtension
  11. {
  12. /// <summary>
  13. /// 写Session
  14. /// </summary>
  15. /// <param name="session"></param>
  16. /// <param name="key">键</param>
  17. /// <param name="value">值</param>
  18. public static void Set(this ISession session, string key, object value)
  19. {
  20. session.SetString(key, value.ToJsonString());
  21. }
  22. /// <summary>
  23. /// 获取Session
  24. /// </summary>
  25. /// <typeparam name="T">对象</typeparam>
  26. /// <param name="session"></param>
  27. /// <param name="key">键</param>
  28. /// <returns>对象</returns>
  29. public static T Get<T>(this ISession session, string key)
  30. {
  31. string value = session.GetString(key);
  32. if (string.IsNullOrEmpty(value))
  33. {
  34. return typeof(T).Namespace switch
  35. {
  36. "System.Collections.Generic" => (T)(Expression.Lambda(Expression.New(typeof(T))).CompileFast().DynamicInvoke()),
  37. _ => default
  38. };
  39. }
  40. return JsonConvert.DeserializeObject<T>(value);
  41. }
  42. }
  43. }