private async Task <Result <T> > GetValue <T>(string cacheKey) { await Task.Yield(); var value = await _cacheProvider.Get(cacheKey); if (value != null && value is T) { OnCacheHit(cacheKey); return(new Result <T>((T)value)); } else { OnCacheMiss(cacheKey); return(new Result <T>()); } }