public override TValue Get <TValue>(string key, Func <TValue> missingFunc) { key = GetKey <TValue>(key); TValue value; if (!TryGetValueInternal(key, out value)) { value = missingFunc(); var cacheValue = new CacheValue(value, SystemTime.UtcNow() + Expiration); _internalCache[key] = cacheValue; } return(value); }
public async override Task <TValue> GetAsync <TValue>(string key, Func <Task <TValue> > missingFunc) { key = GetKey <TValue>(key); TValue value; if (!TryGetValueInternal(key, out value)) { value = await missingFunc(); if (value != default(TValue)) { var cacheValue = new CacheValue(value, SystemTime.UtcNow() + Expiration); _internalCache[key] = cacheValue; } } return(value); }
public override void Add <TValue>(string key, TValue value) { key = GetKey <TValue>(key); _internalCache[key] = new CacheValue(value, SystemTime.UtcNow() + Expiration); }