FallbackPolicy<TResult>
public class FallbackPolicy<TResult> : Policy<TResult>, IFallbackPolicy<TResult>, IFallbackPolicy, IsPolicy
A fallback policy that can be applied to delegates returning a value of type TResult.
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading;
namespace Polly.Fallback
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
public class FallbackPolicy<[System.Runtime.CompilerServices.Nullable(2)] TResult> : Policy<TResult>, IFallbackPolicy<TResult>, IFallbackPolicy, IsPolicy
{
private readonly Action<DelegateResult<TResult>, Context> _onFallback;
private readonly Func<DelegateResult<TResult>, Context, CancellationToken, TResult> _fallbackAction;
internal FallbackPolicy(PolicyBuilder<TResult> policyBuilder, Action<DelegateResult<TResult>, Context> onFallback, Func<DelegateResult<TResult>, Context, CancellationToken, TResult> fallbackAction)
: base(policyBuilder)
{
if (onFallback == null)
throw new ArgumentNullException("onFallback");
_onFallback = onFallback;
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
_fallbackAction = fallbackAction;
}
[DebuggerStepThrough]
protected override TResult Implementation(Func<Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken)
{
return FallbackEngine.Implementation<TResult>(action, context, cancellationToken, base.ExceptionPredicates, base.ResultPredicates, _onFallback, _fallbackAction);
}
}
}