private static void Deserialize(IReadOnlyDictionary <string, string> values, ITaskProcessorPollingQueuesConfiguration result, string prefix)
        {
            if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal))
            {
                prefix = prefix + ".";
            }

            foreach (KeyValuePair <string, string> pair in values.Where(v => v.Key.StartsWith(prefix, StringComparison.Ordinal) && v.Key.EndsWith(".Type", StringComparison.Ordinal)))
            {
                string key = pair.Value;

                ITaskProcessorPollingQueueConfiguration config = result.Add(key);

                config.MaxWorkers = RedisConverter.ParseInteger(values[prefix + key + ".MaxWorkers"]);

                RedisTaskProcessorConfigurationRepository.Deserialize(values, config, prefix + key);
            }
        }
        private static void MergeWith(this ITaskProcessorPollingQueuesConfiguration source, ITaskProcessorPollingQueuesConfiguration other)
        {
            foreach (ITaskProcessorPollingQueueConfiguration queueConfig in source.ToArray())
            {
                if (other[queueConfig.Key] == null)
                {
                    source.Remove(queueConfig.Key);
                }
            }

            foreach (ITaskProcessorPollingQueueConfiguration queueConfig in other)
            {
                if (source[queueConfig.Key] == null)
                {
                    source.AddCopy(queueConfig);
                }
            }
        }
        private static void Serialize(ITaskProcessorPollingQueuesConfiguration configuration, IDictionary <string, string> result, string prefix)
        {
            if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal))
            {
                prefix = prefix + ".";
            }

            foreach (ITaskProcessorPollingQueueConfiguration config in configuration)
            {
                result.Add(
                    string.Concat(prefix, config.Key, ".Type"),
                    RedisConverter.ToString(config.Key));

                result.Add(
                    string.Concat(prefix, config.Key, ".MaxWorkers"),
                    RedisConverter.ToString(config.MaxWorkers));

                RedisTaskProcessorConfigurationRepository.Serialize(config, result, prefix + config.Key);
            }
        }