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

ChaosOutcomePipelineBuilderExtensions

Extension methods for adding chaos outcome strategy to a ResiliencePipelineBuilder.
using Polly.Simmy.Outcomes; using Polly.Utils; using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Polly.Simmy { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public static class ChaosOutcomePipelineBuilderExtensions { public static ResiliencePipelineBuilder<TResult> AddChaosOutcome<[System.Runtime.CompilerServices.Nullable(2)] [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] TResult>(this ResiliencePipelineBuilder<TResult> builder, double injectionRate, [System.Runtime.CompilerServices.Nullable(new byte[] { 1, 2 })] Func<TResult> resultGenerator) { Guard.NotNull(builder, "builder"); builder.AddChaosOutcome(new ChaosOutcomeStrategyOptions<TResult> { InjectionRate = injectionRate, OutcomeGenerator = (Func<OutcomeGeneratorArguments, ValueTask<Outcome<TResult>?>>)((OutcomeGeneratorArguments _) => new ValueTask<Outcome<TResult>?>((Outcome<TResult>?)Outcome.FromResult<TResult>(resultGenerator()))) }); return builder; } [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> AddChaosOutcome<[System.Runtime.CompilerServices.Nullable(2)] [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] TResult>(this ResiliencePipelineBuilder<TResult> builder, ChaosOutcomeStrategyOptions<TResult> options) { Guard.NotNull(builder, "builder"); Guard.NotNull(options, "options"); builder.AddStrategy((StrategyBuilderContext context) => new ChaosOutcomeStrategy<TResult>(options, context.Telemetry), options); return builder; } } }