public DonutOutputCacheAttribute(IKeyBuilder keyBuilder)
        {
            _keyGenerator         = new KeyGenerator(keyBuilder);
            _outputCacheManager   = new OutputCacheManager(OutputCache.Instance, keyBuilder);
            _donutHoleFiller      = new DonutHoleFiller(new EncryptingActionSettingsSerialiser(new ActionSettingsSerialiser(), new Encryptor()));
            _cacheSettingsManager = new CacheSettingsManager();
            _cacheHeadersHelper   = new CacheHeadersHelper();

            Duration = -1;
            Location = (OutputCacheLocation)(-1);
            Options  = OutputCache.DefaultOptions;
        }
        public DonutOutputCacheAttribute()
        {
            var keyBuilder = new KeyBuilder();

            _keyGenerator = new KeyGenerator(keyBuilder);
            _donutHoleFiller = new DonutHoleFiller(new EncryptingActionSettingsSerialiser(new ActionSettingsSerialiser(), new Encryptor()));
            _outputCacheManager = new OutputCacheManager(OutputCache.Instance, keyBuilder);
            _cacheSettingsManager = new CacheSettingsManager();
            _cacheHeadersHelper = new CacheHeadersHelper();

            Duration = -1;
            Location = (OutputCacheLocation)(-1);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DonutOutputCacheAttribute"/> class.
        /// </summary>
        /// <param name="keyGenerator">The key generator.</param>
        /// <param name="outputCacheManager">The output cache manager.</param>
        /// <param name="donutHoleFiller">The donut hole filler.</param>
        /// <param name="cacheSettingsManager">The cache settings manager.</param>
        /// <param name="cacheHeadersHelper">The cache headers helper.</param>
        protected DonutOutputCacheAttribute(
            IKeyGenerator keyGenerator, IReadWriteOutputCacheManager outputCacheManager,
            IDonutHoleFiller donutHoleFiller, ICacheSettingsManager cacheSettingsManager, ICacheHeadersHelper cacheHeadersHelper
            )
        {
            KeyGenerator         = keyGenerator;
            OutputCacheManager   = outputCacheManager;
            DonutHoleFiller      = donutHoleFiller;
            CacheSettingsManager = cacheSettingsManager;
            CacheHeadersHelper   = cacheHeadersHelper;

            Duration = -1;
            Location = (OutputCacheLocation)(-1);
            Options  = OutputCache.DefaultOptions;
        }
        protected DonutOutputCacheAttribute(
            IKeyGenerator keyGenerator, IReadWriteOutputCacheManager outputCacheManager,
            IDonutHoleFiller donutHoleFiller, ICacheSettingsManager cacheSettingsManager, ICacheHeadersHelper cacheHeadersHelper
        )
        {
            KeyGenerator = keyGenerator;
            OutputCacheManager = outputCacheManager;
            DonutHoleFiller = donutHoleFiller;
            CacheSettingsManager = cacheSettingsManager;
            CacheHeadersHelper = cacheHeadersHelper;

            Duration = -1;
            Location = (OutputCacheLocation)(-1);
            Options = OutputCache.DefaultOptions;
        }