C#语法糖之 session操作类 asp.net
用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //声名一个数据集合 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 |
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | 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]; } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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 ; } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?