<PackageReference Include="Polly.Core" Version="8.3.0" />

ResiliencePipelineBuilderExtensions

using Polly.Utils; using Polly.Utils.Pipeline; using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; namespace Polly { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public static class ResiliencePipelineBuilderExtensions { [System.Runtime.CompilerServices.NullableContext(0)] internal sealed class EmptyOptions : ResilienceStrategyOptions { [System.Runtime.CompilerServices.Nullable(1)] public static readonly EmptyOptions Instance = new EmptyOptions(); } [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "The EmptyOptions have nothing to validate.")] public static TBuilder AddPipeline<[System.Runtime.CompilerServices.Nullable(0)] TBuilder>(this TBuilder builder, ResiliencePipeline pipeline) where TBuilder : ResiliencePipelineBuilderBase { Guard.NotNull(builder, "builder"); Guard.NotNull(pipeline, "pipeline"); builder.AddPipelineComponent((StrategyBuilderContext _) => PipelineComponentFactory.FromPipeline(pipeline), EmptyOptions.Instance); return builder; } [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "The EmptyOptions have nothing to validate.")] public static ResiliencePipelineBuilder<TResult> AddPipeline<[System.Runtime.CompilerServices.Nullable(2)] TResult>(this ResiliencePipelineBuilder<TResult> builder, ResiliencePipeline<TResult> pipeline) { Guard.NotNull(builder, "builder"); Guard.NotNull(pipeline, "pipeline"); builder.AddPipelineComponent((StrategyBuilderContext _) => PipelineComponentFactory.FromPipeline<TResult>(pipeline), EmptyOptions.Instance); return builder; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("This call validates the options using the data annotations attributes.\r\nMake sure that the options are included by adding the '[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(OptionsType))]' attribute to the calling method.")] public static TBuilder AddStrategy<[System.Runtime.CompilerServices.Nullable(0)] TBuilder>(this TBuilder builder, Func<StrategyBuilderContext, ResilienceStrategy> factory, ResilienceStrategyOptions options) where TBuilder : ResiliencePipelineBuilderBase { Guard.NotNull(builder, "builder"); Guard.NotNull(factory, "factory"); Guard.NotNull(options, "options"); builder.AddPipelineComponent((StrategyBuilderContext context) => PipelineComponentFactory.FromStrategy(factory(context)), options); return builder; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("This call validates the options using the data annotations attributes.\r\nMake sure that the options are included by adding the '[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(OptionsType))]' attribute to the calling method.")] public static ResiliencePipelineBuilder AddStrategy(this ResiliencePipelineBuilder builder, Func<StrategyBuilderContext, ResilienceStrategy<object>> factory, ResilienceStrategyOptions options) { Guard.NotNull(builder, "builder"); Guard.NotNull(factory, "factory"); Guard.NotNull(options, "options"); builder.AddPipelineComponent((StrategyBuilderContext context) => PipelineComponentFactory.FromStrategy(factory(context)), options); return builder; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("This call validates the options using the data annotations attributes.\r\nMake sure that the options are included by adding the '[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(OptionsType))]' attribute to the calling method.")] public static ResiliencePipelineBuilder<TResult> AddStrategy<[System.Runtime.CompilerServices.Nullable(2)] TResult>(this ResiliencePipelineBuilder<TResult> builder, Func<StrategyBuilderContext, ResilienceStrategy<TResult>> factory, ResilienceStrategyOptions options) { Guard.NotNull(builder, "builder"); Guard.NotNull(factory, "factory"); Guard.NotNull(options, "options"); builder.AddPipelineComponent((StrategyBuilderContext context) => PipelineComponentFactory.FromStrategy<TResult>(factory(context)), options); return builder; } } }