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

FallbackTResultSyntax

public static class FallbackTResultSyntax
Fluent API for defining a Fallback Policy.
using Polly.Fallback; using System; using System.Collections.Generic; using System.Threading; namespace Polly { public static class FallbackTResultSyntax { public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, TResult fallbackValue) { Action<DelegateResult<TResult>> onFallback = delegate { }; return policyBuilder.Fallback(() => fallbackValue, onFallback); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, Func<TResult> fallbackAction) { if (fallbackAction == null) throw new ArgumentNullException("fallbackAction"); Action<DelegateResult<TResult>> onFallback = delegate { }; return policyBuilder.Fallback(fallbackAction, onFallback); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, Func<CancellationToken, TResult> fallbackAction) { if (fallbackAction == null) throw new ArgumentNullException("fallbackAction"); Action<DelegateResult<TResult>> onFallback = delegate { }; return policyBuilder.Fallback(fallbackAction, onFallback); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, TResult fallbackValue, Action<DelegateResult<TResult>> onFallback) { if (onFallback == null) throw new ArgumentNullException("onFallback"); return policyBuilder.Fallback(() => fallbackValue, delegate(DelegateResult<TResult> outcome, Context ctx) { onFallback(outcome); }); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, Func<TResult> fallbackAction, Action<DelegateResult<TResult>> onFallback) { if (fallbackAction == null) throw new ArgumentNullException("fallbackAction"); if (onFallback == null) throw new ArgumentNullException("onFallback"); return policyBuilder.Fallback(fallbackAction, delegate(DelegateResult<TResult> outcome, Context ctx) { onFallback(outcome); }); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, Func<CancellationToken, TResult> fallbackAction, Action<DelegateResult<TResult>> onFallback) { if (fallbackAction == null) throw new ArgumentNullException("fallbackAction"); if (onFallback == null) throw new ArgumentNullException("onFallback"); return policyBuilder.Fallback(fallbackAction, delegate(DelegateResult<TResult> outcome, Context ctx) { onFallback(outcome); }); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, TResult fallbackValue, Action<DelegateResult<TResult>, Context> onFallback) { if (onFallback == null) throw new ArgumentNullException("onFallback"); return policyBuilder.Fallback((CancellationToken ct) => fallbackValue, onFallback); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, Func<TResult> fallbackAction, Action<DelegateResult<TResult>, Context> onFallback) { if (fallbackAction == null) throw new ArgumentNullException("fallbackAction"); if (onFallback == null) throw new ArgumentNullException("onFallback"); return policyBuilder.Fallback((CancellationToken ct) => fallbackAction(), onFallback); } public static FallbackPolicy<TResult> Fallback<TResult>(this PolicyBuilder<TResult> policyBuilder, Func<CancellationToken, TResult> fallbackAction, Action<DelegateResult<TResult>, Context> onFallback) { if (fallbackAction == null) throw new ArgumentNullException("fallbackAction"); if (onFallback == null) throw new ArgumentNullException("onFallback"); return new FallbackPolicy<TResult>((Func<Func<CancellationToken, TResult>, Context, CancellationToken, TResult>)((Func<CancellationToken, TResult> action, Context context, CancellationToken cancellationToken) => FallbackEngine.Implementation<TResult>(action, context, cancellationToken, (IEnumerable<ExceptionPredicate>)policyBuilder.ExceptionPredicates, (IEnumerable<ResultPredicate<TResult>>)policyBuilder.ResultPredicates, onFallback, fallbackAction)), (IEnumerable<ExceptionPredicate>)policyBuilder.ExceptionPredicates, (IEnumerable<ResultPredicate<TResult>>)policyBuilder.ResultPredicates); } } }