WebExtension.cs 1.2 KB

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