namespace JSMR.Application.Common.Caching; public class CacheEntryOptions { private DateTimeOffset? _absoluteExpiration; private TimeSpan? _absoluteExpirationRelativeToNow; private TimeSpan? _slidingExpiration; /// /// Gets or sets an absolute expiration date for the cache entry. /// public DateTimeOffset? AbsoluteExpiration { get { return _absoluteExpiration; } set { _absoluteExpiration = value; } } /// /// Gets or sets an absolute expiration time, relative to now. /// public TimeSpan? AbsoluteExpirationRelativeToNow { get { return _absoluteExpirationRelativeToNow; } set { if (value <= TimeSpan.Zero) { throw new ArgumentOutOfRangeException( nameof(AbsoluteExpirationRelativeToNow), value, "The relative expiration value must be positive."); } _absoluteExpirationRelativeToNow = value; } } /// /// Gets or sets how long a cache entry can be inactive (e.g. not accessed) before it will be removed. /// This will not extend the entry lifetime beyond the absolute expiration (if set). /// public TimeSpan? SlidingExpiration { get { return _slidingExpiration; } set { if (value <= TimeSpan.Zero) { throw new ArgumentOutOfRangeException( nameof(SlidingExpiration), value, "The sliding expiration value must be positive."); } _slidingExpiration = value; } } }