//MemStache<X, IMemStacheItem<X>> public static dynamic Create <X>(StacheItemEnum category = StacheItemEnum.stchBasic, Func <string, string, Task> saveCacheItemData = null, Func <string, Task <X> > getCacheItemData = null) where X : class { try { //MemStache<X, IMemStacheItem<X>> result = null; dynamic result = null; if (category == StacheItemEnum.stchSerialized) { result = new MemStache <X, MemStacheSerializedItem <X> >(category, saveCacheItemData, getCacheItemData); } else { result = new MemStache <X, MemStacheProtectedItem <X> >(category, saveCacheItemData, getCacheItemData); } return(result); } catch (Exception e) { Console.WriteLine("Error: {0}" + e.Message); throw; } }
private MemStache(StacheItemEnum category = StacheItemEnum.stchBasic, Func <string, string, Task> _SaveCacheItemData = null, Func <string, Task <T> > _GetCacheItemData = null) { _stacheItemEnum = category; SaveCacheItemData = _SaveCacheItemData; GetCacheItemData = _GetCacheItemData; _weakCache = new ConcurrentDictionary <string, WeakReference <MemStacheItemType> >(StringComparer.Ordinal); _limitedCache = new ConcurrentDictionary <string, MemStacheItemType>(StringComparer.Ordinal); _pendingTasks = new ConcurrentDictionary <string, Task <T> >(StringComparer.Ordinal); }