/// <summary> /// Constructor /// </summary> /// <param name="bucketCount">number of cache buckets</param> /// <param name="bucketMapper">bucket mapper</param> /// <param name="comparer">comparer to ensure the equality of 2 values</param> /// <param name="cleanupSettings">Cache eviction settings</param> public MemoryCache(int bucketCount, KeyMappingDelegate <TKey> bucketMapper, IEqualityComparer <TValue> comparer, CleanupSettings cleanupSettings) { _bucketCount = bucketCount; _buckets = new MemoryCacheBucket <TKey, TValue> [_bucketCount]; _bucketMapper = bucketMapper; _comparer = comparer; for (int i = 0; i < _bucketCount; i++) { _buckets[i] = new MemoryCacheBucket <TKey, TValue>(_comparer); } _cleanupSettings = cleanupSettings; _cleanupTimer = new Timer(new TimerCallback(CacheCleanup), this, _cleanupSettings.CleanupInterval, _cleanupSettings.CleanupInterval); }
/// <summary> /// Constructor /// </summary> /// <param name="comparer">comparer to ensure the equality of 2 values</param> /// <param name="cleanupSettings">Cache eviction settings</param> public MemoryCache(IEqualityComparer <TValue> comparer, CleanupSettings cleanupSettings) : this(64, DefaultKeyMapping, comparer, cleanupSettings) { }
/// <summary> /// Constructor /// </summary> /// <param name="cleanupSettings">Cache eviction settings</param> public MemoryCache(CleanupSettings cleanupSettings) : this(new DefaultEqualityComparer <TValue>(), cleanupSettings) { }