using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.FSE.BL { /// /// Represents an in-memory global cache manager. /// public class MemoryCacheManager { private Dictionary _cacheDictionaries; private static MemoryCacheManager _instance; /// /// Gets the default singleton instance. /// public static MemoryCacheManager Default { get { if (_instance == null) { _instance = new MemoryCacheManager(); } return _instance; } } /// /// Initializes a new instance of the class. /// public MemoryCacheManager() { _cacheDictionaries = new Dictionary(); } /// /// Gets the specified or creates and return a new one. /// /// /// The name. /// public MemoryCacheDictionary GetOrCreateCache(String name) where TValue : class { if (_cacheDictionaries.ContainsKey(name)) { return _cacheDictionaries[name] as MemoryCacheDictionary; } else { var cacheDictionary = new MemoryCacheDictionary(name); _cacheDictionaries[name] = cacheDictionary; return cacheDictionary; } } /// /// Gets the specified or creates and return a new one. /// /// /// The name. /// public MemoryCacheDoubleKeyDictionary GetOrCreateCache(String name) where TValue : class { if (_cacheDictionaries.ContainsKey(name)) { return _cacheDictionaries[name] as MemoryCacheDoubleKeyDictionary; } else { var cacheDictionary = new MemoryCacheDoubleKeyDictionary(name); _cacheDictionaries[name] = cacheDictionary; return cacheDictionary; } } /// /// Clears all stored by this manager. /// public void ClearAll() { foreach (var cacheDictionary in _cacheDictionaries) { cacheDictionary.Value.Clear(); } } } }