我刚刚学到了关于在类中使用静态属性的痛苦教训。主要是当它们不是加载的aspx页面的一部分时,它们不是特定于浏览器会话的。 (请在我错误的地方纠正我,因为我没有正式的编程教育)
此后我一直在使用Session对象。
我讨厌Session对象的主要原因是它们会受到拼写错误的影响,因为它们不知道智能感知。
您不能只键入namespace.class.class.setget属性,并且知道您正在引用正确的会话对象,就像使用类属性一样。
有没有办法将类和会话对象混合在一起,所以当我调用会话对象时,我可以使用intellisense?
答案 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); }
}