session操作类

实现代码:

//声名一个数据集合
         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; }
    }
}
时间: 2024-11-07 15:33:12

session操作类的相关文章

C#语法糖之 session操作类 asp.net

用法: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c" }; //session key string key = "sekey"; //获取实例 var sessionManager = SessionManager<List<string>>.GetInstance(); //添加session session

.Net常用工具类——Session操作类

using System;using System.Collections.Generic;using System.Text;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts; namespace ZC

C#操作session的类实例

本文实例讲述了C#操作session的类.分享给大家供大家参考.具体分析如下: 这个C#类对session操作进行了再次封装,可以大大简化session的常用操作,同时这个类可以将session值设置为数组,也可以将值读取为数组列表,如果你有这方面的需要可以使用这个类,扩这自己对这个C#类进行扩展. using System.Web; namespace DotNet.Utilities { public static class SessionHelper2 { /// <summary>

【.NET】Cookie操作类

using System; using System.Web; using System.Data; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; namespace Tool { /// <summary> /// Cookie操作类 /// </summary> public static c

php redis数据库操作类

<?php namespace iphp\db; use iphp\App; /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * @author xuen * */ class Redis { private $redis; //当前数据库ID号 protected $dbId=0; //当前权限认证码 protected $auth; /** * 实例化的对象,单例模式. *

C#EXCEL 操作类--C#DataToExcel帮助类

using System; using System.Diagnostics; //using Excel; namespace DotNet.Utilities {     /// <summary>     /// 操作EXCEL导出数据报表的类     /// </summary>     public class DataToExcel     {         public DataToExcel()         {         }           #reg

CI的session操作

在使用session之前,要对配置文件config.php 里面的$config['encryption_key']随便赋个值,例如1234 1. 首先要加载session类,固定写法:$this->load->library('session');//加载session类 2.session的信息以数组的方式保存:$this->session->set_userdata($arr);//创建session 3.读取session信息: $this->session->

C#语法糖之 cache操作类 asp.net

因为考虑到我下面我将写session cookies 等 操作类 ,与cache具有共性. 所以都统一继承了IHttpStorageObject  abstract class 来保函数风格的统一 ,但是又为了调用方便,抽象中又使用了单例来简化调用. 使用方法很简单: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c" }; //缓存key string key

封装php redis缓存操作类

封装php redis缓存操作类,集成了连接redis并判断连接是否成功,redis数据库选择,检测redis键是否存在,获取值,写入值,设置生存时间和删除清空操作. php redis类代码: <?php/*** redisdrive.class.php* php redis 操作类**/class redisdrive{ //键名 public $key; //值 public $value; //默认生存时间 public $expire = 86400; /*60*60*24*/ //连