public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = Enabled.GetHashCode();
         hashCode = (hashCode * 397) ^ ResponseKindsToCache.GetHashCode();
         hashCode = (hashCode * 397) ^ ResponseKindsToIgnore.GetHashCode();
         hashCode = (hashCode * 397) ^ RefreshMode.GetHashCode();
         hashCode = (hashCode * 397) ^ RefreshTime.GetHashCode();
         hashCode = (hashCode * 397) ^ ExpirationTime.GetHashCode();
         hashCode = (hashCode * 397) ^ FailedRefreshDelay.GetHashCode();
         hashCode = (hashCode * 397) ^ RequestGroupingBehavior.GetHashCode();
         hashCode = (hashCode * 397) ^ RefreshBehavior.GetHashCode();
         hashCode = (hashCode * 397) ^ RevokedResponseBehavior.GetHashCode();
         hashCode = (hashCode * 397) ^ ExpirationBehavior.GetHashCode();
         hashCode = (hashCode * 397) ^ CacheResponsesWhenSupressedBehavior.GetHashCode();
         hashCode = (hashCode * 397) ^ NotIgnoredResponseBehavior.GetHashCode();
         return(hashCode);
     }
 }
        private IMethodCachingSettings GetCachingSettings(double ttlSeconds         = 60 * 60 * 6,
                                                          double refreshTimeSeconds = 60,
                                                          RevokedResponseBehavior revokedResponseBehavior = RevokedResponseBehavior.FetchNewValueNextTime,
                                                          ResponseKinds responseKindsToCache  = ResponseKinds.NonNullResponse | ResponseKinds.NullResponse,
                                                          ResponseKinds responseKindsToIgnore = ResponseKinds.EnvironmentException | ResponseKinds.OtherExceptions | ResponseKinds.RequestException | ResponseKinds.TimeoutException,
                                                          RefreshBehavior refreshBehavior     = RefreshBehavior.UseOldAndFetchNewValueInBackground) =>
        new MethodCachingPolicyConfig
        {
            ExpirationTime = TimeSpan.FromSeconds(ttlSeconds),
            RefreshTime    = TimeSpan.FromSeconds(refreshTimeSeconds),

            FailedRefreshDelay                  = TimeSpan.FromSeconds(1),
            Enabled                             = true,
            ResponseKindsToCache                = responseKindsToCache,
            ResponseKindsToIgnore               = responseKindsToIgnore,
            RequestGroupingBehavior             = RequestGroupingBehavior.Enabled,
            RefreshBehavior                     = refreshBehavior,
            RevokedResponseBehavior             = revokedResponseBehavior,
            CacheResponsesWhenSupressedBehavior = CacheResponsesWhenSupressedBehavior.Enabled,
            RefreshMode                         = RefreshMode.UseRefreshes,
            ExpirationBehavior                  = ExpirationBehavior.DoNotExtendExpirationWhenReadFromCache,
            NotIgnoredResponseBehavior          = NotIgnoredResponseBehavior.KeepCachedResponse
        };