如何将 [] 索引应用于“ISession”类型的表达式?
Posted
技术标签:
【中文标题】如何将 [] 索引应用于“ISession”类型的表达式?【英文标题】:How to apply indexing with [] to an expression of type 'ISession'? 【发布时间】:2021-10-30 19:28:55 【问题描述】:我正在努力解决这个问题:我正在尝试使用以下方法从他的会话中检索我的用户:
var user = HttpContext.Session.Get("User");
但与此同时,我正在尝试将其转换为 BusinessCustomer 对象:
var user = Convert.ToHttpContext.Session.GetString("User") as BusinessCustomer;
由于没有继承链接,所以出现问题,我不知道如何解决它
我正在考虑序列化用户,然后创建一个 BusinessCustomer 对象并用参数填充它,但我不知道它们是否是其他方式。
谢谢
【问题讨论】:
【参考方案1】:首先你创建这个类
public static class SessionExtensions
public static void SetObject(this ISession session, string key, object value)
session.SetString(key, JsonConvert.SerializeObject(value));
public static T GetObject<T>(this ISession session, string key)
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
那么设置值就可以了
var user = new User();
HttpContext.Session.SetObject("User", user);
最终得到你的价值
var sessionUser = HttpContext.Session.GetObject<User>("User");
【讨论】:
以上是关于如何将 [] 索引应用于“ISession”类型的表达式?的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 [] 将索引应用于“System.Dynamic.DynamicObject”类型的表达式
在 Visual Studio 2015 中调试时无法解析参数名称类型 ISession
无法将带有 [] 的索引应用于“System.Collections.Generic.IEnumerable<> 类型的表达式