FallbackResiliencePipelineBuilderExtensions
Extensions for adding fallback to  ResiliencePipelineBuilder.
            
                using Polly.Fallback;
using Polly.Utils;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
namespace Polly
{
    [System.Runtime.CompilerServices.NullableContext(1)]
    [System.Runtime.CompilerServices.Nullable(0)]
    public static class FallbackResiliencePipelineBuilderExtensions
    {
        [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "All options members preserved.")]
        public static ResiliencePipelineBuilder<TResult> AddFallback<[System.Runtime.CompilerServices.Nullable(2)] [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] TResult>(this ResiliencePipelineBuilder<TResult> builder, FallbackStrategyOptions<TResult> options)
        {
            Guard.NotNull(builder, "builder");
            Guard.NotNull(options, "options");
            return builder.AddStrategy((StrategyBuilderContext context) => FallbackResiliencePipelineBuilderExtensions.CreateFallback<TResult>(context, options), options);
        }
        private static ResilienceStrategy<TResult> CreateFallback<[System.Runtime.CompilerServices.Nullable(2)] TResult>(StrategyBuilderContext context, FallbackStrategyOptions<TResult> options)
        {
            return new FallbackResilienceStrategy<TResult>(new FallbackHandler<TResult>(options.ShouldHandle, options.FallbackAction), options.OnFallback, context.Telemetry);
        }
    }
}