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)] [DynamicallyAccessedMembers(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;
        }
        [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)] [DynamicallyAccessedMembers(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;
        }
    }
}