예제 #1
0
        public async Task <T> GetObjectSafeAsync <T>(CacheObjectsName name)
        {
            var result = default(T);

            try
            {
                var cache = await _cache.GetAsync(name.ToString());

                if (cache == null)
                {
                    _logger.LogInformation($"Cache missed for {name}");
                    return(default(T));
                }

                var obj = JsonConvert.DeserializeObject <T>(GetString(cache));

                return(obj);
            }
            catch (Exception exception)
            {
                _logger.LogError(GetHashCode(), exception, exception.Message);
            }

            return(result);
        }
예제 #2
0
        public async Task <T> GetOrSaveDataInCacheAsync <T>(CacheObjectsName name, Func <Task <T> > source, DistributedCacheEntryOptions options = null)
        {
            var obj = await GetObjectSafeAsync <T>(name);

            if (obj != null)
            {
                return(obj);
            }

            var result = await source();

            await SaveObjectSafeAsync(name, result, options);

            return(result);
        }
예제 #3
0
        public async Task SaveObjectSafeAsync(CacheObjectsName name, object value, DistributedCacheEntryOptions options = null)
        {
            try
            {
                var obj = JsonConvert.SerializeObject(value);

                if (options != null)
                {
                    await _cache.SetAsync(name.ToString(), GetBytes(obj), options);
                }
                else
                {
                    await _cache.SetAsync(name.ToString(), GetBytes(obj));
                }
            }
            catch (Exception exception)
            {
                _logger.LogError(GetHashCode(), exception, exception.Message);
            }
        }
예제 #4
0
 public Task SaveObjectSafeAsync(CacheObjectsName name, object value,
                                 DistributedCacheEntryOptions options = null) => throw new NotImplementedException();
예제 #5
0
 public Task <T> GetObjectSafeAsync <T>(CacheObjectsName name) => throw new NotImplementedException();
예제 #6
0
 public async Task <T> GetOrSaveDataInCacheAsync <T>(CacheObjectsName name, Func <Task <T> > source,
                                                     DistributedCacheEntryOptions options = null)
 {
     return(await source());
 }