private static void Serialize(IPollingJobsConfiguration configuration, IDictionary <string, string> result, string prefix) { if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal)) { prefix = prefix + "."; } foreach (IPollingJobConfiguration config in configuration) { result.Add( string.Concat(prefix, config.ImplementationType.Name, ".Type"), RedisConverter.ToString(config.ImplementationType, false)); RedisTaskProcessorConfigurationRepository.Serialize(config, result, prefix + config.ImplementationType.Name); } }
private static void Deserialize(IReadOnlyDictionary <string, string> values, IPollingJobsConfiguration 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))) { Type implementationType = RedisConverter.ParseType(pair.Value); IPollingJobConfiguration config = result.Add(implementationType); RedisTaskProcessorConfigurationRepository.Deserialize(values, config, prefix + implementationType.Name); } }
private static void MergeWith(this IPollingJobsConfiguration source, IPollingJobsConfiguration other) { foreach (IPollingJobConfiguration queueConfig in source.ToArray()) { if (other[queueConfig.ImplementationType] == null) { source.Remove(queueConfig.ImplementationType); } } foreach (IPollingJobConfiguration queueConfig in other) { if (source[queueConfig.ImplementationType] == null) { source.AddCopy(queueConfig); } } }