public ObjectCache(ObjectCacheSettings settings, IEqualityComparer <TKey> comparer)
 {
     this.settings            = settings.Clone();
     this.cacheItems          = new Dictionary <TKey, Item <TKey, TValue> >(comparer);
     this.idleTimeoutEnabled  = settings.IdleTimeout != TimeSpan.MaxValue;
     this.leaseTimeoutEnabled = settings.LeaseTimeout != TimeSpan.MaxValue;
 }
        public ObjectCache(ObjectCacheSettings settings, IEqualityComparer <TKey> comparer)
        {
            Fx.Assert(settings != null, "caller must use a valid settings object");
            this.settings   = settings.Clone();
            this.cacheItems = new Dictionary <TKey, Item>(comparer);

            // idle feature is disabled if settings.IdleTimeout == TimeSpan.MaxValue
            this.idleTimeoutEnabled = (settings.IdleTimeout != TimeSpan.MaxValue);

            // lease feature is disabled if settings.LeaseTimeout == TimeSpan.MaxValue
            this.leaseTimeoutEnabled = (settings.LeaseTimeout != TimeSpan.MaxValue);
        }