/// <summary> /// Initializes a new instance of the <see cref="MammothCache"/> class. /// </summary> /// <param name="firstLevelCache">First level of cache</param> /// <param name="secondLevelCache">Second level of cache</param> /// <param name="nonSerializableCache">Cache for objects that cannot be serialized</param> /// <param name="serializationProvider">Serialization provider</param> public MammothCache(IFirstLevelCache firstLevelCache, ISecondLevelCache secondLevelCache, INonSerializableCache nonSerializableCache, IMammothCacheSerializationProvider serializationProvider) { NonSerializableCache = nonSerializableCache; FirstLevelCache = firstLevelCache; SecondLevelCache = secondLevelCache; SerializationProvider = serializationProvider; SubscribeToEvents(); }
/// <summary> /// Initializes a new instance of the <see cref="SquirrelCache"/> class. /// </summary> /// <param name="config">Configuration of the <see cref="SquirrelCache"/></param> /// <param name="cloningProvider">Cloning provider</param> /// <param name="serializationProvider">Serialization provider</param> public SquirrelCache(IFirstLevelCacheConfig config, IFirstLevelCacheCloningProvider cloningProvider, IMammothCacheSerializationProvider serializationProvider) { _config = config; _cloningProvider = cloningProvider; _serializationProvider = serializationProvider; if (_config.AbsoluteExpiration.TotalSeconds <= 0) { throw new ArgumentException("AbsoluteExpiration must be greater than 0"); } if (_config.MaximumMemorySize <= 0) { throw new ArgumentException("MaximumMemorySize must be greater than 0"); } if (_config.TimerInterval.TotalMilliseconds <= 0) { throw new ArgumentException("TimerInterval must be greater than 0"); } _cache = new InMemoryCache(_config.TimerInterval, _config.MaximumMemorySize); }