PolicyRegistry
public class PolicyRegistry : IPolicyRegistry<string>, IReadOnlyPolicyRegistry<string>, IEnumerable<KeyValuePair<string, IsPolicy>>, IEnumerable
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();
}
}
}