<PackageReference Include="Polly" Version="7.0.3" />

PolicyRegistry

Stores a registry of String and policy pairs.
using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; namespace Polly.Registry { public class PolicyRegistry : IPolicyRegistry<string>, IReadOnlyPolicyRegistry<string>, IEnumerable<KeyValuePair<string, IsPolicy>>, IEnumerable { private readonly IDictionary<string, IsPolicy> _registry; public int Count => _registry.Count; public IsPolicy this[string key] { get { return _registry[key]; } set { _registry[key] = value; } } public PolicyRegistry(IDictionary<string, IsPolicy> registry = null) { _registry = (registry ?? new ConcurrentDictionary<string, IsPolicy>()); } public void Add<TPolicy>(string key, TPolicy policy) where TPolicy : IsPolicy { _registry.Add(key, (IsPolicy)(object)policy); } public TPolicy Get<TPolicy>(string key) where TPolicy : IsPolicy { return (TPolicy)_registry[key]; } public bool TryGet<TPolicy>(string key, out TPolicy policy) where TPolicy : IsPolicy { IsPolicy value; bool flag = _registry.TryGetValue(key, out value); policy = (flag ? ((TPolicy)value) : default(TPolicy)); return flag; } public void Clear() { _registry.Clear(); } public bool ContainsKey(string key) { return _registry.ContainsKey(key); } public bool Remove(string key) { return _registry.Remove(key); } public IEnumerator<KeyValuePair<string, IsPolicy>> GetEnumerator() { return _registry.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }