A simple class that caches Hashtables within a Session object in C#.
using System; using System.Web; using System.Web.SessionState; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; public class Cache { /** * Delete the cache item from the cache by key * * @param string CacheKey: The data to delete * @return bool: Indicates the cache key was deleted **/ public static bool Delete(string CacheKey) { HttpContext.Current.Session[CacheKey] = null; return true; } /** * Get the cache item by key * * @param string CacheKey: The data to retrieve * @return Hashtable: The data retrieved **/ public static Hashtable Get(string CacheKey) { if (HttpContext.Current.Session[CacheKey] != null) { Cache.Item item = (Cache.Item)HttpContext.Current.Session[CacheKey]; if (item.Expiration >= DateTime.Now) { return item.Data; } } return null; } /** * Set a cache item * * @param string CacheKey: The key to set for the item * @param Hashtable Data: The data to set * @param int NumSecondsAlive: The number of seconds to set the cache for (defaults to 5 seconds) * @return Hashtable: The data retrieved **/ public static bool Set(string CacheKey, Hashtable Data = null, int NumSecondsAlive = 5) { Cache.Delete(CacheKey); HttpContext.Current.Session[CacheKey] = new Cache.Item(Data, NumSecondsAlive); return true; } /** * * Start Item Class * **/ private class Item { public Hashtable Data = null; public DateTime Expiration = new DateTime(); public Item(Hashtable Data, int NumSecondsAlive) { this.Data = Data; this.Expiration = DateTime.Now.AddSeconds(NumSecondsAlive); } } // End Item Class } // End Cache Class
You may want to consider performance and efficiency when implementing this on an actual site.