亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

重構Session確實讓代碼簡潔干凈了不少

2019-11-18 19:12:24
字體:
來源:轉載
供稿:網友

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
    /**//// <summary>
    /// Returns the userID as a Int32 instead of an object.
    /// This way you will get the compiler protection and intelligence support you need.
    /// </summary>
    public static Int32 UserID
    {
      get
      {
        return (Int32) GetValueOrDefault( eKeys.UserID, nUSERID_UNKOWN );
      }
      set
      {
        if ( nUSERID_MINIMUM >= value )
        {
          throw new ApplicationException ( String.Format(sUSERID_INVALID, value, nUSERID_MINIMUM ));
        }
        SetValue( eKeys.UserID, value );
      }
    }
    #endregion

    private: GetValueOrDefault( eKeys eKey, Object oDefaultValue )#region private: GetValueOrDefault( eKeys eKey, Object oDefaultValue )
    /**//// <summary>
    /// Gets the value from the session object.
    /// </summary>
    /// <param name="eKey"> The session key to get the value for.</param>
    /// <param name="oDefaultValue">The default value to use if no valid value stored.</param>
    /// <returns>When the value is null or the key does not exist,
    /// the specified default value is returned.
    /// Otherwise, the value is returned</returns>
    private static object GetValueOrDefault( eKeys eKey, Object oDefaultValue )
    {
      //get the value
      object oValue = GetValue( eKey );

      //value not found or null?
      if (null == oValue)
      {
        //return default value
        return oDefaultValue;
      }

      //everything oke: return session value
      return oValue;
    }
    #endregion
    private: GetMandatoryValue( eKeys eKey )#region private: GetMandatoryValue( eKeys eKey )
    /**//// <summary>
    /// Returns the session value for a session-key that must exist.
    /// If the key does not exist an applicationException is thrown.
    /// </summary>
    /// <param name="eKey"> The session-key to return the session-value for. </param>
    /// <returns> A none-null value.</returns>
    private static object GetMandatoryValue( eKeys eKey )
    {
      //get the value
      object oValue = GetValue( eKey );

      //key not found or value null?
      if ( null == oValue )
      {
        //throw applicationException because its application logic error (none CLR)
        throw new ApplicationException ( String.Format( sMANDATORY_SESSION_KEY_NOT_FOUND_MSG, eKey.ToString() ));
      }

      //everything oke: return value
      return oValue;
    }
    #endregion
    private: GetValue( eKeys eKey )#region private: GetValue( eKeys eKey )
    /**//// <summary>
    /// Gets the session value from the specified key.
    /// </summary>
    /// <param name="eKey">The key to get the value from</param>
    /// <returns>The session value for the specified session key.
    /// If the key does not exist, null is returned.
    /// </returns>
    private static object GetValue( eKeys eKey )
    {
      return HttpContext.Current.Items[ eKey.ToString() ];
    }
    #endregion

    private SetMandatoryValue( eKeys eKey, Object oValue )#region private SetMandatoryValue( eKeys eKey, Object oValue )
    private static void SetMandatoryValue( eKeys eKey, Object oValue )
    {
      if ( null == oValue )
      {
        throw new ApplicationException(  String.Format(sMANDATORY_SESSION_VALUE_INVALID_NULL, eKey.ToString() ) );
      }
    }
    #endregion
    private SetValue( eKeys eKey, Object oValue)#region private SetValue( eKeys eKey, Object oValue)
    /**//// <summary>
    /// Stores the specified session-value to the specified session-key.
    /// </summary>
    /// <param name="eKey">The key for the value to store in the session.</param>
    /// <param name="oValue">The value to store in the session</param>
    private static void SetValue ( eKeys eKey, Object oValue)
    {
      HttpContext.Current.Items[eKey.ToString()] = oValue;
    }
    #endregion

    /**//// <summary>
    /// An enum for the
    /// </summary>
    private enum eKeys
    {
      UserID
    }
    }
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩免费电影在线观看| 欧美电影第一页| 久久手机精品视频| 性欧美视频videos6一9| 国产精品视频yy9099| 日本久久久久亚洲中字幕| 久久久久久久成人| 欧美成人精品在线播放| 欧美成人激情视频免费观看| 久久免费视频这里只有精品| 992tv成人免费影院| 欧美华人在线视频| 欧美区二区三区| 亚洲三级 欧美三级| 91精品国产91久久久| 91精品国产高清久久久久久91| 日韩成人在线观看| 欧美激情国内偷拍| 欧美性猛交视频| 日韩欧美成人区| 精品久久久久久亚洲精品| 欧美性极品xxxx做受| 亚洲电影免费观看高清完整版在线| 久久国产精品网站| 欧美高清电影在线看| 国产精品一香蕉国产线看观看| 97国产精品久久| 久久人体大胆视频| 国产精品久久一区| 成人福利免费观看| 色偷偷偷综合中文字幕;dd| 亚洲精品乱码久久久久久按摩观| 伊人一区二区三区久久精品| 国产精品久久久久久av| 成人精品久久一区二区三区| 久久久精品免费| 国产欧美日韩精品丝袜高跟鞋| 国内精品一区二区三区| 另类少妇人与禽zozz0性伦| 久久久亚洲影院| 久久天天躁狠狠躁夜夜躁| 深夜精品寂寞黄网站在线观看| 日韩免费在线免费观看| 国产精品午夜国产小视频| 日韩av电影在线免费播放| 日韩一区二区久久久| 黑人欧美xxxx| 国产大片精品免费永久看nba| 欧美日韩一区二区在线播放| 在线亚洲午夜片av大片| 91av在线网站| 九九精品在线观看| 亚洲精品美女在线观看播放| 91精品在线一区| 日韩中文字幕国产| 97成人超碰免| 欧美在线观看日本一区| 久久久久这里只有精品| 亚洲国模精品一区| 成人激情黄色网| 亚洲精品国产精品国自产在线| 国产精品视频一| 亚洲精品白浆高清久久久久久| 欧美激情视频一区二区| 亚洲人成电影网站色…| 69久久夜色精品国产7777| 中文字幕精品www乱入免费视频| 国产精品亚洲片夜色在线| 国产精品日韩在线观看| 久久国产精品久久久| 日韩免费视频在线观看| 欧美一区亚洲一区| 日韩免费精品视频| 日韩av一区在线| 亚洲国产精品国自产拍av秋霞| 欧美日韩性生活视频| 国产91精品在线播放| 日韩美女主播视频| 4438全国成人免费| 国产丝袜视频一区| 日韩视频免费大全中文字幕| 久久人人爽国产| 成人高h视频在线| 日韩男女性生活视频| 日韩男女性生活视频| 亚洲第一精品福利| 国产香蕉精品视频一区二区三区| 91免费高清视频| 国产精品狼人色视频一区| 亚洲欧美日韩国产中文| 国产91热爆ts人妖在线| 成人精品一区二区三区电影免费| 亚洲欧洲国产一区| 国产精品自产拍在线观看中文| 国产精品揄拍一区二区| 亚洲国产精品字幕| 8050国产精品久久久久久| 欧美日韩一区二区三区| 亚洲欧美在线免费观看| 久久影院免费观看| 在线播放精品一区二区三区| 2019av中文字幕| 亚洲成色www8888| 91性高湖久久久久久久久_久久99| 91精品视频在线播放| 777午夜精品福利在线观看| 国内精品视频一区| 亚洲成人久久久| 成人免费激情视频| 97精品国产97久久久久久| 热门国产精品亚洲第一区在线| 国产成人综合亚洲| 久热精品视频在线免费观看| 亚洲mm色国产网站| 久久久女女女女999久久| 欧美猛交ⅹxxx乱大交视频| 亚洲最大福利视频网| 色综合久久88色综合天天看泰| 久久九九精品99国产精品| 国产va免费精品高清在线| 91久久精品久久国产性色也91| 欧美精品videosex极品1| 日韩在线视频一区| 中文字幕亚洲一区| 久久97久久97精品免视看| 91精品国产综合久久香蕉| 日韩av在线免费观看一区| 国产精品无码专区在线观看| 欧美性一区二区三区| 国产成人精品综合久久久| 国产99久久精品一区二区| 成人精品久久av网站| 好吊成人免视频| 精品久久久免费| 亚洲伊人第一页| 国产精品男人的天堂| 日韩精品日韩在线观看| 久久久久久美女| 欧美日韩第一视频| 国产一区二区三区在线| 欧美国产中文字幕| 亚洲国产精品yw在线观看| 久久久亚洲精选| 日韩欧美国产高清91| 国产精品国产三级国产专播精品人| 青青a在线精品免费观看| 97成人在线视频| 国产精品高潮呻吟视频| 美女少妇精品视频| 国产一区二区黑人欧美xxxx| 日韩网站在线观看| 色偷偷偷综合中文字幕;dd| 日韩av一区在线观看| 96国产粉嫩美女| 色多多国产成人永久免费网站| 国产成人精品综合| 国产精品一区二区久久精品| 色婷婷av一区二区三区久久| 18一19gay欧美视频网站| 97精品一区二区视频在线观看| 国产精品极品在线| 国内精品国产三级国产在线专| 欧美影院成年免费版| 日韩欧美中文字幕在线播放|