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; }
    }
}

  

时间: 2024-08-07 21:04:18

C#语法糖之 session操作类 asp.net的相关文章

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

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

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

用法: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c" }; //缓存key string key = "cokey"; //获取实例 var cookiesManager = CookiesManager<List<string>>.GetInstance(); //插入缓存 cookiesManager.Add

session操作类

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

.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

Python语法糖系列

摘自:https://blog.csdn.net/five3/article/details/83474633语法糖说明语法糖(Syntactic sugar): 计算机语言中特殊的某种语法 这种语法对语言的功能并没有影响 对于程序员有更好的易用性 能够增加程序的可读性简而言之,语法糖就是程序语言中提供[奇技淫巧]的一种手段和方式而已. 通过这类方式编写出来的代码,即好看又好用,好似糖一般的语法.固美其名曰:语法糖 一个简单的例子假设:有2个数字,现需要从中得到最大的那个数字.如何实现? b =

C#操作session的类实例

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

ASP.net如何保证EF操作类线程内唯一

说到线程内唯一,肯定会想到单例模式,但是如果多用户访问网站就会出现问题.ASP.net中有两种方法可以保证EF操作类线程内唯一(目前只会这两种,以后有好的方法再添加): 1.httpcontext(实现原理也是通过数据槽callcontext) 将EF操作类通过键值对方法保存在HttpContext.Current.Items["key"],封装成方法直接调用 2.callcontext public static DbContext CreateDbContext() { DbCon

ASP.NET(C#) 数据库操作类 SqlServerDataBase

1 using System.Web.Security; 2 using System.Web.UI; 3 using System.Web.UI.WebControls; 4 using System.Web.UI.WebControls.WebParts; 5 using System.Web.UI.HtmlControls; 6 using System.Data.SqlClient; 7 8 namespace Mysqlserver 9 { 10 /// <summary> 11 /

asp.net文件操作类

/** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; using System.IO; #endregion namespace CommonUtilities { /// <summary> /// 文件操作类 /// </summary> public class FileHelper { #region 检测指定目录是否存在 /// <