public static async Task <IEnumerable <T> > TryGetEnumerableFromCacheAsync <T>(this ICacheProvider cacheProvider, string key, Func <Task <IEnumerable <T> > > retrievalFunc) { if (await cacheProvider.ContainsKeyAsync(key)) { return(await cacheProvider.GetAsync <T[]>(key)); } var data = await retrievalFunc(); _ = cacheProvider.AddAsync(key, data.ToArray()); return(data); }