using FastExpressionCompiler;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System.Linq.Expressions;
namespace Masuit.Tools.Core.Net
{
///
/// Web操作扩展
///
public static class WebExtension
{
///
/// 写Session
///
///
/// 键
/// 值
public static void Set(this ISession session, string key, object value)
{
session.SetString(key, value.ToJsonString());
}
///
/// 获取Session
///
/// 对象
///
/// 键
/// 对象
public static T Get(this ISession session, string key)
{
string value = session.GetString(key);
if (string.IsNullOrEmpty(value))
{
return typeof(T).Namespace switch
{
"System.Collections.Generic" => (T)(Expression.Lambda(Expression.New(typeof(T))).CompileFast().DynamicInvoke()),
_ => default
};
}
return JsonConvert.DeserializeObject(value);
}
}
}