PolicyRegistry
using System.Collections.Concurrent;
using System.Collections.Generic;
namespace Polly.Registry
{
public class PolicyRegistry : IPolicyRegistry<string>, IReadOnlyPolicyRegistry<string>
{
private readonly IDictionary<string, IsPolicy> _registry = new ConcurrentDictionary<string, IsPolicy>();
public int Count => _registry.Count;
public IsPolicy this[string key] {
get {
return _registry[key];
}
set {
_registry[key] = value;
}
}
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);
}
}
}