I have a wrapper around Cache library and have the following method to retrieve the cached valued based on Key:
public async Task<T> GetAsync<T>(string key) { var serializedObject = await _cache.GetStringAsync(key); return JsonConvert.DeserializeObject<T>(serializedObject); } The problem is there is nothing in cache, I receive an error from the DeserializeObject method. I'm stuck on what how to return either null or the default value of T when nothing is stored cache.
I tried:
public async Task<T> GetAsync<T>(string key) { var serializedObject = await _cache.GetStringAsync(key); if (serializedObject == null) return Task.CompletedTask; return JsonConvert.DeserializeObject<T>(serializedObject); } But Task.CompletedTask cannot be converted to Task<T>
I tried:
public async Task<T> GetAsync<T>(string key) { var serializedObject = await _cache.GetStringAsync(key); if (serializedObject == null) return Task.FromResult<T>(null); return JsonConvert.DeserializeObject<T>(serializedObject); } But null is not a valid parameter for T.
How do I get GetAsync to return either null or the default value of T?
Update
I got the following to work:
public async Task<T> GetAsync<T>(string key) { var serializedObject = await _cache.GetStringAsync(key); return serializedObject == null ? default(T) : JsonConvert.DeserializeObject<T>(serializedObject); }
return null;/return default(T);?T?default<T>works fine