你的位置:首页 > ASP.net教程

[ASP.net教程]C#语法糖之 session操作类 asp.net


用法:

  //声名一个数据集合      var listString = new List<string>() { "a", "b", "c" };      //session key      string key = "sekey";      //获取实例      var sessionManager = SessionManager<List<string>>.GetInstance();      //添加session      sessionManager.Add(key, listString);      //add有其它重载 上面是最基本的      //获取      List<string> sessionList = sessionManager[key];      //其它方法      sessionManager.ContainsKey(key);      sessionManager.Remove(key);//删除      sessionManager.RemoveAll(c => c.Contains("sales_"));//删除key包含sales_的session      sessionManager.GetAllKey();//获取所有key

  

 

 

代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;namespace SyntacticSugar{  /// <summary>  /// ** 描述:session操作类  /// ** 创始时间:2015-6-9  /// ** 修改时间:-  /// ** 作者:sunkaixuan  /// ** 使用说明:  /// </summary>  /// <typeparam name="K">键</typeparam>  /// <typeparam name="V">值</typeparam>  public class SessionManager<V> : IHttpStorageObject<V>  {    private static readonly object _instancelock = new object();    private static SessionManager<V> _instance = null;    public static SessionManager<V> GetInstance()    {      if (_instance == null)      {        lock (_instancelock)        {          if (_instance == null)          {            _instance = new SessionManager<V>();          }        }      }      return _instance;    }    public override void Add(string key, V value)    {      context.Session.Add(key, value);    }    public override bool ContainsKey(string key)    {      return context.Session[key] != null;    }    public override V Get(string key)    {      return (V)context.Session[key];    }    public override IEnumerable<string> GetAllKey()    {      foreach (var key in context.Session.Keys)      {        yield return key.ToString();      }    }    public override void Remove(string key)    {      context.Session[key] = null;      context.Session.Remove(key);    }    public override void RemoveAll()    {      foreach (var key in GetAllKey())      {        Remove(key);      }    }    public override void RemoveAll(Func<string, bool> removeExpression)    {      var allKeyList = GetAllKey().ToList();      var removeKeyList = allKeyList.Where(removeExpression).ToList();      foreach (var key in removeKeyList)      {        Remove(key);      }    }    public override V this[string key]    {      get { return (V)context.Session[key]; }    }  }}

  

using System;namespace SyntacticSugar{  public abstract class IHttpStorageObject<V>  {    public int Minutes = 60;    public int Hour = 60 * 60;    public int Day = 60 * 60 * 24;    public System.Web.HttpContext context = System.Web.HttpContext.Current;    public abstract void Add(string key, V value);    public abstract bool ContainsKey(string key);    public abstract V Get(string key);    public abstract global::System.Collections.Generic.IEnumerable<string> GetAllKey();    public abstract void Remove(string key);    public abstract void RemoveAll();    public abstract void RemoveAll(Func<string, bool> removeExpression);    public abstract V this[string key] { get; }  }}