/// <summary> /// Adds or updates object in the cache. /// </summary> /// <param name="key">Object key. Can not be null.</param> /// <param name="value">Object value.</param> /// <param name="parameters">Caching parameters.</param> public void Add(string key, object value, CachingParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (value == null) { this.Remove(key); return; } if (parameters.NoCaching) { return; } var cacheEntryOptions = new MemoryCacheEntryOptions { Priority = GetCacheItemPriority(parameters.Priority) }; if (!parameters.Sliding) { cacheEntryOptions.AbsoluteExpiration = DateTimeOffset.Now + parameters.Expiration; } else { cacheEntryOptions.SlidingExpiration = parameters.Expiration; } cache.Set(key, value, cacheEntryOptions); }
/// <summary> /// Constructor. /// </summary> /// <param name="result">Resulting data. Can be null.</param> /// <param name="parameters">Caching parameters. Can not be null.</param> public CachableResult(T result, CachingParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } this.Result = result; this.Parameters = parameters; }
private CachingParameters([NotNull] CachingParameters other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } this.Expiration = other.Expiration; this.Sliding = other.Sliding; this.Priority = other.Priority; }
/// <summary> /// Adds or updates object in the cache. /// </summary> /// <param name="key">Object key. Can not be null.</param> /// <param name="value">Object value.</param> /// <param name="parameters">Caching parameters.</param> public void Add(string key, object value, CachingParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (value == null) { this.Remove(key); return; } if (parameters.NoCaching) { return; } #if NET471 var options = new CacheItemPolicy(); if (parameters.Priority == CachePriority.NotRemovable) { options.Priority = CacheItemPriority.NotRemovable; } #elif NETSTANDARD2_0 var options = new MemoryCacheEntryOptions(); if (parameters.Priority == CachePriority.NotRemovable) { options.Priority = CacheItemPriority.NeverRemove; } #endif if (!parameters.Sliding) { options.AbsoluteExpiration = DateTimeOffset.Now + parameters.Expiration; } else { options.SlidingExpiration = parameters.Expiration; } this.cache.Set(key, value, options); }
/// <summary> /// Adds or updates object in the cache. /// </summary> /// <param name="key">Object key. Can not be null.</param> /// <param name="value">Object value.</param> /// <param name="parameters">Caching parameters.</param> public virtual void Add(string key, object value, CachingParameters parameters) { this.Items[key] = value; }
/// <summary> /// Constructor. /// </summary> /// <param name="result">Resulting data. Can be null.</param> /// <param name="parameters">Caching parameters. Can not be null.</param> public CachableResult(T result, [CanBeNull] CachingParameters parameters) { this.Parameters = parameters ?? throw new ArgumentNullException(nameof(parameters)); this.Result = result; }