zoukankan      html  css  js  c++  java
  • 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; }
        }
    }
    

      

  • 相关阅读:
    operation not possible due to RF-kill
    kali linux karmetasploit配置【续】
    kali linux karmetasploit配置
    转 15款免费WiFi(入侵破解)安全测试工具
    利用NTFS交换数据流隐藏文件
    droidbox官网
    Linux安装IDA神器
    Linksys WRT120N路由器备份文件解析
    设置主机只对网关的报文进行响应
    MySQL无法存储emoji表情方案
  • 原文地址:https://www.cnblogs.com/sunkaixuan/p/4564612.html
Copyright © 2011-2022 走看看