包装你的Session,使Session对象化

Web开发中直接操作Session可能引发运行时异常,且强制转换繁琐。引入Session的包装,使之对象化、强类型化,如创建SessionHelper类。这样使用更方便,能提高程序的可读性和可维护性,还可将运行期错误提前到编译期。
在Web开发中,经常需要使用Session来保存特定用户的信息,在我们的程序中很多地方散落着类似下面的语句:
None.gifintuserAge=(int)this.Session["UserAge"];

我们知道,Session中存放的是键值对,键是string类型的,如果我们一不小心把上面的语句写成这样:
None.gifintuserAge=(int)this.Session["UseAge"];
编译期不会发现这个错误,但运行时一定会抛出异常,这是在程序中直接操作Session可能引发的问题之一。另外,每次获取userAge的时候都要写代码进行强制转换,感觉很繁琐。我们需要一个解决方案来解决这些问题。我的做法是引入一个Session的包装,使之对象化、强类型化。就像接下来的例子一样:
publicclassSessionHelper
{
privateHttpSessionStatecurSession;

publicSessionHelper(HttpSessionStatesession)
{
this.curSession=session;
}

publicstaticSessionHelperCreateInstance(HttpSessionStatesession)
{
returnnewSessionHelper(session);
}


publicstringUserID
{
get
{
returnthis.curSession["UserID"].ToString();
}
set
{
this.curSession["UserID"]=value;
}
}

publicintUserAge
{
get
{
return(int)this.curSession["UserAge"];
}
set
{
this.curSession["UserAge"]=value;
}
}

//某用户上传的所有图片
publicArrayListPicList
{
get
{
if(this.curSession["PicList"]==null)
{
this.curSession["PicList"]=newArrayList();
}

return(ArraayList)this.curSession["PicList"];
}
}

//清空图片列表
publicvoidClearAllPics()
{
this.PicList.Clear();
}
}

这样,我们用起来就非常方便了:
SessionHelpersessionHelper=SessionHelper.CreateInstance(this.Session);
ArrayListpicList
=sessionHelper.PicList;
//dot.gifdot.gif处理picList中的图片
sessionHelper.ClearAllPics();

引入这一层包装,可以使我们的程序的可读性、可维护性更好,而且将原来的一些运行期的错误提前到了编译期,这也是强类型带来的好处。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值