如何将 [] 索引应用于“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”类型的表达式

无法使用 [] 将索引应用于“对象”类型的表达式

无法将带有 [] 的索引应用于“type”类型的表达式

在 Visual Studio 2015 中调试时无法解析参数名称类型 ISession

无法将带有 [] 的索引应用于“System.Collections.Generic.IEnumerable<> 类型的表达式

如何将函数应用于日期索引的 DataFrame