gpt4 book ai didi

asp.net - asp.net 中的强类型 session

转载 作者:行者123 更新时间:2023-12-04 14:20:58 25 4
gpt4 key购买 nike

如果已经问过这个问题,请原谅我。 HttpContext.Current.Session["key"]返回一个对象,我们必须将它转换为特定的 Type在我们可以使用它之前。我正在研究类型化 session 的各种实现

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

我觉得如果我们想添加一个新的 Type,我们需要向 SessionManager 添加更多代码(如果我错了,请纠正我)。对象进入 session ,作为方法或作为单独的包装器。我以为我们可以使用泛型

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<ClassType>.GetSession("sessionString")

  • 比使用
    HttpContext.Current.Session["sessionString"] as ClassType
  • 我还以为会很好
    有类似
  • 的东西
    SessionManager["sessionString"] = objToStoreInSession ,
    但是发现静态类不能有索引器。有没有其他方法可以实现这一目标?
  • 我的想法是创建一个 SessionObject 来存储 Type和对象,然后将此对象添加到 Session(使用 SessionManager),并使用 key 。检索时,将所有对象强制转换为 SessionObject , 获取类型(比如 t)和对象(比如 obj)并转换 objt并将其归还。
    public class SessionObject
    {
    public Type type {get;set;}
    public Object obj{get;set;}

    }

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

    是否有其他优雅的方式以更安全的方式保存/检索 session 中的对象

    最佳答案

    对于处理 Session 的非常干净、可维护和灵活的方式,请查看此 post .你会惊讶它是多么简单。

    关于asp.net - asp.net 中的强类型 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2035136/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com