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值设置 ...
随机推荐
- NAS服务器局域网内IPad、手机、电视盒子等联网播放
为把各个移动硬盘和不同电脑的数据进行统一管理,入手了一台希捷 Seagate Business 无内置硬盘 商业级 2盘位 云存储网路存储,经过卖家指点和不断摸索,终于能用了,主要步骤如下: 1. 系 ...
- BootStrap安装
1. 安装Node.js http://nodejs.org/download/ 2. 加速NPM安装 npm install -g cnpm --registry=http://r.cn ...
- 【Android开发坑系列】之try-catch
try { mViewPager.postDelayed(new Runnable() { @Override public void run() { getCurrentPage().render( ...
- Spark核心—RDD初探
本文目的 最近在使用Spark进行数据清理的相关工作,初次使用Spark时,遇到了一些挑(da)战(ken).感觉需要记录点什么,才对得起自己.下面的内容主要是关于Spark核心-RDD的相关 ...
- MySQL执行计划中key_len详解
(1).索引字段的附加信息:可以分为变长和定长数据类型讨论,当索引字段为定长数据类型,比如char,int,datetime,需要有是否为空的标记,这个标记需要占用1个字节:对于变长数据类型,比如:v ...
- DIV实现CSS 的placeholder效果
placeholder是HTML5中input的属性,但该属性并不支持除input以外的元素 但我们可以使用Css before选择器来实现完全相同的效果 <!DOCTYPE html> ...
- [LeetCode] Longest Increasing Subsequence
Longest Increasing Subsequence Given an unsorted array of integers, find the length of longest incre ...
- 导出websphere内存镜像
1. 将脚本放致profiles\appservername\bin下 2. 查看一下soap host(在控制台port中能够看到) 3. 运行例如以下命令:./wsa ...
- NSObject的load和initialize方法(转)
全文转载自:http://www.cocoachina.com/ios/20150104/10826.html 在Objective-C中,NSObject是根类,而NSObject.h的头文件中前两 ...
- MiniCrowler
MiniCrawler Github Path : https://github.com/LixinZhang/miniCrowler Introduction: MiniCrawler is a s ...