|
CodeProject的这篇文章确实对我有所启迪, http://www.codeproject.com/useritems/SessionWrapper.asp#xx1208856xx。
诚如作者所说,我们经常在ASP.NET用许多类似于下面的代码来检测Session中存储的对象,来防止Session过期后存储的变量丢失问题: Int32 nUserID = -1; if ( null != Session["userID"] ) { if ( Session["userID"] is Int32 ) { if ( 0 < Session["userID"] ) { nUserID = (Int32) Session["userID"] } } } if ( -1 == nUserID ) { throw new ApplicationException ( "Unexpected situation: userID invalid." ); } this.doSomething( nUserID ); 这样的代码会遍布各处。
那么,利用他的这个封装方案来做重构,确实让代码简洁干净了不少! 经过他的封装,上面的代码用这么一句话就行了: this.doSomething( CCurrentSession.UserID )
他的类其实也很简单,如下所示:
using System;
using System.Web;

 /**////--------------------------------------------------------------------
/// Developed by M. van Eijkel - aug 2005
/// [e]: marcelvaneijkel@gmail.com
/// [w]: www.vaneijkel.com

namespace VanEijkel.Web
  {
 /**//// <summary>
/// Wrapper class for the session object.
/// It centralizes the logic for retrieving and validation of session information.
/// By using an approach like this you improve the protection and encapsulation of existing code.
/// It offers a simple, low-risk, easy manageable way to improve existing WebApplication.
/// Therfore, I call it webRefactoring.
/// </summary>
public class CurrentSession
 {
 Constants#region Constants
private const String sMANDATORY_SESSION_KEY_NOT_FOUND_MSG = "Session variable excepted but does not exist. Key={0}";
private const String sMANDATORY_SESSION_VALUE_INVALID_NULL = "None null session value excepted. Key={0}";

private const Int32 nUSERID_UNKOWN = -1;
private const Int32 nUSERID_MINIMUM = 1;
private const String sUSERID_INVALID = "Invalid UserID:{0}. UserID should be larger than:{1}";
#endregion

 UserID#region UserID
  [1] [2] [3] [4] [5] 下一页 |