public ActionCache( Func <TKey, TValue> valueFetcher, Func <TValue, uint> sizeEstimator = null, CacheReapPolicy reapStrategy = CacheReapPolicy.None, ExpirationPolicy expirationStrategy = ExpirationPolicy.None, uint maxCapacity = int.MaxValue, TimeSpan?expirationDuration = null, NullValuePolicy nullValuePolicy = NullValuePolicy.CacheNormally, IEqualityComparer <TKey> keyComparer = null) : base(reapStrategy, expirationStrategy, maxCapacity, expirationDuration, nullValuePolicy, keyComparer) { _fetchFunc = valueFetcher; _estimateSizeFunc = sizeEstimator; }
protected CacheBase( CacheReapPolicy reapStrategy = CacheReapPolicy.None, ExpirationPolicy expirationStrategy = ExpirationPolicy.None, uint maxCapacity = int.MaxValue, TimeSpan?expirationDuration = null, NullValuePolicy nullValuePolicy = NullValuePolicy.CacheNormally, IEqualityComparer <TKey> keyComparer = null ) { if (!expirationDuration.HasValue) { expirationDuration = TimeSpan.MaxValue; } NullValuePolicy = nullValuePolicy; InternalStorage = keyComparer == null ? new Dictionary <TKey, CachedItem <TValue> >() : new Dictionary <TKey, CachedItem <TValue> >(keyComparer); CurrentSize = 0; ReapPolicy = reapStrategy; ExpirationPolicy = expirationStrategy; MaxCapacity = maxCapacity; ExpirationDuration = expirationDuration.Value; _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); }