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; }
}
}
C#语法糖之 session操作类 asp.net的更多相关文章
- C#语法糖之 cache操作类 asp.net
因为考虑到我下面我将写session cookies 等 操作类 ,与cache具有共性. 所以都统一继承了IHttpStorageObject abstract class 来保函数风格的统一 , ...
- C#语法糖之Cookies操作类 asp.net
用法: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c&quo ...
- session操作类
using System;using System.Web; /// <summary> ///session操作类 /// </summary> public class a ...
- C# Session 操作类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- using语法糖
资源的分类 首先说一下资源的分类: 托管资源:由CLR管理分配和释放资源 非托管资源:不受CLR管理的对象,如 文件(StreamReader,BinaryReader,DataTable,各种Str ...
- Session帮助类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- ASP.net如何保证EF操作类线程内唯一
说到线程内唯一,肯定会想到单例模式,但是如果多用户访问网站就会出现问题.ASP.net中有两种方法可以保证EF操作类线程内唯一(目前只会这两种,以后有好的方法再添加): 1.httpcontext(实 ...
- asp.net 类库中获取session c#类中获取session
asp.net 类库中获取session c#类中获取session 1. 先引入命名空间 using System.Web; using System.Web.SessionState; 在使用H ...
- C#操作session的类实例
本文实例讲述了C#操作session的类.分享给大家供大家参考.具体分析如下: 这个C#类对session操作进行了再次封装,可以大大简化session的常用操作,同时这个类可以将session值设置 ...
随机推荐
- 制作6寸 kindle pdf
设置word 纸张大小为 90mm*117mm 然后保存为 pdf 就好了.
- crond: unrecognized service 无crond解决办法
运行计划任务时:service crond restart提示:crond: unrecognized service安装计划任务:yum -y install vixie-cron 另外附计划任务的 ...
- android studio 修改成自己jks(keystore)签名文件
项目中有微信分享和微信支付,微信支付后台设置是正式签名md5值不便调试,最初直接在后台创建二个应用一个测试一个正式的,但二个人同时开发这个测试版本的md5又遇到麻烦,所以想到android studi ...
- PHP 数组排序方法总结
sort:本函数为 array 中的单元赋予新的键名.这将删除原有的键名而不仅是重新排序. rsort:本函数对数组进行逆向排序(最高到最低). 删除原有的键名而不仅是重新排序. asort:对数组进 ...
- Android获取TextView显示的字符串宽度
工作上有业务需要判断textview是否换行,我的做法是判断textview要显示的字符串的宽度是否超过我设定的宽度,若超过则会执行换行. 项目中的其他地方也有这样的需求,故直接使用了那一块的代码.如 ...
- Quartz的线程池解析
[org.quartz.core相关类图] 可以看到核心类为QuartzScheduler [QuartzScheduler构造函数] public QuartzScheduler(QuartzSch ...
- [leetcode]Combine Two Tables
leetcode竟然有sql的题了..两道简单的应该会做 这个题主要就是一个left join... # Write your MySQL query statement below SELECT P ...
- 看上去很美 国内CDN现状与美国对比
CDN的理想与现实 多年以前,当<Kingdom of Heaven>这部史诗电影发行的时候,中国的影迷使用电驴和BT来寻找种子,而那个时候,高清也才刚刚进入电影领域,我的同事不惜用自家的 ...
- IIS出现The specified module could not be found解决方法
打开IIS 信息服务,在左侧找到自己的计算机,点右键,选择属性,在主属性中选编辑,打开“目录安全性”选项卡,单击“匿名访问和验证控制”里的“编辑”按钮,在弹出的对话框中确保只选中了“匿名访问”和“集成 ...
- 最近新装系统windows8.1+Mac。。。还没装驱动就遇到一堆问题。。。
---恢复内容开始--- 1,刚开始装好了,后来莫名看不到磁盘了,原因:64位mac盘会丢失盘符,所以macdrive也看不到...解决:(将AF改为06,修改内容后改回AF,早知道这么简单就不用重新 ...