/// <summary>
        /// Updates the cache strategy to include strongly typed parameters
        /// </summary>
        public CacheStrategyParameterized <P1> WithParameters <P1>(P1 param1)
        {
            var copy = new CacheStrategyParameterized <P1>(Cache, BaseKey);

            copy.CopyFrom(this);
            copy.Parameters = new List <object> {
                param1
            };
            return(copy);
        }
        /// <summary>
        /// Updates the cache strategy to include strongly typed parameters
        /// </summary>
        public CacheStrategyParameterized <P1, P2, P3, P4> WithParameters <P1, P2, P3, P4>(P1 param1, P2 param2, P3 param3, P4 param4)
        {
            var copy = new CacheStrategyParameterized <P1, P2, P3, P4>(Cache, BaseKey);

            copy.CopyFrom(this);
            copy.Parameters = new List <object> {
                param1, param2, param3, param4
            };
            return(copy);
        }