/// <summary> /// IoC Constructor - initializes a new instance of the <see cref="Memocache"/> class. /// </summary> /// <param name="cache">The cache.</param> /// <param name="logger">The logger.</param> public Memocache(ICache cache, IMemocacheLog logger) { Contract.Requires(cache != null, "An ICache instance is required."); Contract.Requires(logger != null, "An IMemocacheLog instance is required."); _log = logger; _log.CreatingMemoCache(cache.Name); _cache = cache; _log.CreatedMemoCache(); }
/// <summary> /// Creates a new memocache instance with optional name and cache policy /// </summary> /// <param name="name">The name to assign to the memocache. Do <em>not</em> use the name 'default'</param> /// <param name="defaultPolicy">The <see cref="CacheItemPolicy"/> to use as default for new entries</param> /// <param name="cache">Injected cache implementation if default <see cref="MemoryCache"/> not wanted.</param> /// <param name="logger">The <see cref="IMemocacheLog"/> instance to use for logging.</param> public Memocache(string name, CacheItemPolicy defaultPolicy, ICache cache = null, IMemocacheLog logger = null) { Contract.Requires(String.Equals(name, "default", StringComparison.OrdinalIgnoreCase) == false, "Do not use the name 'default' as that is the default name"); Contract.Requires(name == null || name.Length > 0); _log = logger ?? new NullLog(); _log.CreatingMemoCache(name); Name = name; _cache = cache ?? new CacheImplementation(Name); if (defaultPolicy != null) { _cache.DefaultPolicy = defaultPolicy; } _log.CreatedMemoCache(); }