加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net中强类型的会话

发布时间:2020-12-15 21:03:52 所属栏目:asp.Net 来源:网络整理
导读:如果这个问题已被提出,请原谅我. HttpContext.Current.Session [“key”]返回一个对象,我们必须先将它强制转换为该特定的Type才能使用它.我正在研究类型会话的各种实现 http://www.codeproject.com/KB/aspnet/typedsessionstate.aspx http://weblogs.asp.net
如果这个问题已被提出,请原谅我. HttpContext.Current.Session [“key”]返回一个对象,我们必须先将它强制转换为该特定的Type才能使用它.我正在研究类型会话的各种实现

http://www.codeproject.com/KB/aspnet/typedsessionstate.aspx
http://weblogs.asp.net/cstewart/archive/2008/01/09/strongly-typed-session-in-asp-net.aspx
http://geekswithblogs.net/dlussier/archive/2007/12/24/117961.aspx

如果我们想要将一个新的对象类型添加到会话中,或者作为方法或单独的包装器,我觉得我们需要在SessionManager中添加更多代码(如果我错了,请更正).我以为我们可以使用泛型

public static class SessionManager<T> where T:class
 {
  public void SetSession(string key,object objToStore)
  {
   HttpContext.Current.Session[key] = objToStore;
  }

  public T GetSession(string key)
  {
   return HttpContext.Current.Session[key] as T;
  }

 }

>是否有任何固有的优势
运用

SessionManager<类类别> .GetSession( “sessionString”)

而不是使用

HttpContext.Current.Session["sessionString"] as ClassType

>我还以为这会很好
有类似的东西

SessionManager [“sessionString”] = objToStoreInSession,
但发现静态类不能有索引器.有没有其他方法来实现这一目标?

>我的想法是创建一个SessionObject,它将存储Type和对象,然后使用密钥将此对象添加到Session(使用SessionManager).检索时,将所有对象强制转换为SessionObject,获取类型(比方说t)和Object(比如obj)并将obj转换为t并返回它.

公共类SessionObject
{
public type type {get; set;}
public Object obj {get; set;}
}

这不会起作用(因为返回签名将是相同的,但返回类型将是不同的).

是否有任何其他优雅的方式以更安全的方式在会话中保存/检索对象

解决方法

对于一个非常干净,可维护和光滑的处理Session的方式,请看这个 post.你会惊讶它是多么简单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读