查询会话对象,类和智能感知

时间:2013-12-18 23:56:34

标签: c# asp.net class session intellisense

我刚刚学到了关于在类中使用静态属性的痛苦教训。主要是当它们不是加载的aspx页面的一部分时,它们不是特定于浏览器会话的。 (请在我错误的地方纠正我,因为我没有正式的编程教育)

此后我一直在使用Session对象。

我讨厌Session对象的主要原因是它们会受到拼写错误的影响,因为它们不知道智能感知。

您不能只键入namespace.class.class.setget属性,并且知道您正在引用正确的会话对象,就像使用类属性一样。

有没有办法将类和会话对象混合在一起,所以当我调用会话对象时,我可以使用intellisense?

3 个答案:

答案 0 :(得分:2)

创建一个包装Session对象的包装类。最后,你仍然必须使用键/值系统。

public class MySessionWrapper
{
   public string MySessionProperty 
   {
      get
      { 
          return Session["myProperty"] == null ? null : (string) Session["myProperty"]; 
      }
      set
      { 
          Session.Add("myProperty", value);
      }
   }
}

答案 1 :(得分:1)

你可以将它包装在方法中。举个例子,假设我们存储了一个User对象。 像这样:

public void SetUser(User user)
{
    Session.Add("User", user);
}

public User GetUser()
{
     User user = (User)Session["User"];

     return user;
}

答案 2 :(得分:0)

我认为我已经优化了代码。让我知道是否有人看到任何可能成为问题的东西。到目前为止,我没有看到任何问题。

public Users.CurrentUser GetSetCurrentUser
{
    get
    {
        if (Session["cUser"] == null) GetSetCurrentUser = new Users.CurrentUser();
        return (Users.cUser)Session["CurrentUser"];
    }
    set { Session.Add("cUser", value); }
}