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

      

  • 相关阅读:
    微软一站式示例代码库(中文版)20110924版本, 新添加ASP.NET, Windows Base, Silverlight, WinForm等20个Sample
    Expression Blend实例中文教程系列文章汇总
    【分享】Silverlight 探秘系列课程汇总(下载)
    【分享】分享几个不错的富文本编辑器插件
    推荐 10 个优秀的 HTML5 编码工具
    SQLite数据库操作类
    每天写出好代码的5个建议
    ASP.NET中26个常用性能优化方法
    ConnectString中enlist设置的含义
    使用VS2008打开VS2010的解决方案
  • 原文地址:https://www.cnblogs.com/sunkaixuan/p/4564612.html
Copyright © 2020-2023  润新知