public static TItem GetOrCreate <TItem>(this IMyCache cache, object key, Func <ICacheEntry, TItem> factory) { if (!cache.TryGetValue(key, out var result)) { var entry = cache.CreateEntry(key); result = factory(entry); entry.SetValue(result); entry.Dispose(); } return((TItem)result); }
public static async Task <TItem> GetOrCreateAsync <TItem>(this IMyCache cache, object key, Func <ICacheEntry, Task <TItem> > factory) { if (!cache.TryGetValue(key, out object result)) { var entry = cache.CreateEntry(key); result = await factory(entry); entry.SetValue(result); entry.Dispose(); } return((TItem)result); }
public T GetCache <T>(string key) { return(!_cache.TryGetValue(key, out T data) ? default(T) : data); }