{"record":{"id":"e3b9096ce013f4f5","repo":"App-vNext/Polly","slug":"value-cannot-be-null-e3b909","errorCode":null,"errorMessage":"Value cannot be null.","messagePattern":"Value cannot be null\\.","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Polly/ResiliencePipelineConversionExtensions.cs","lineNumber":17,"sourceCode":"using Polly.Utilities.Wrappers;\n\nnamespace Polly;\n\n/// <summary>\n/// Extensions for conversion of resilience strategies to policies.\n/// </summary>\npublic static class ResiliencePipelineConversionExtensions\n{\n    /// <summary>\n    /// Converts a <see cref=\"ResiliencePipeline\"/> to an <see cref=\"IAsyncPolicy\"/>.\n    /// </summary>\n    /// <param name=\"strategy\">The strategy instance.</param>\n    /// <returns>An instance of <see cref=\"IAsyncPolicy\"/>.</returns>\n    /// <exception cref=\"ArgumentNullException\">Thrown when <paramref name=\"strategy\"/> is <see langword=\"null\"/>.</exception>\n    public static IAsyncPolicy AsAsyncPolicy(this ResiliencePipeline strategy)\n        => new ResiliencePipelineAsyncPolicy(strategy ?? throw new ArgumentNullException(nameof(strategy)));\n\n    /// <summary>\n    /// Converts a <see cref=\"ResiliencePipeline{TResult}\"/> to an <see cref=\"IAsyncPolicy{TResult}\"/>.\n    /// </summary>\n    /// <typeparam name=\"TResult\">The type of the result.</typeparam>\n    /// <param name=\"strategy\">The strategy instance.</param>\n    /// <returns>An instance of <see cref=\"IAsyncPolicy{TResult}\"/>.</returns>\n    /// <exception cref=\"ArgumentNullException\">Thrown when <paramref name=\"strategy\"/> is <see langword=\"null\"/>.</exception>\n    public static IAsyncPolicy<TResult> AsAsyncPolicy<TResult>(this ResiliencePipeline<TResult> strategy)\n        => new ResiliencePipelineAsyncPolicy<TResult>(strategy ?? throw new ArgumentNullException(nameof(strategy)));\n\n    /// <summary>\n    /// Converts a <see cref=\"ResiliencePipeline\"/> to an <see cref=\"ISyncPolicy\"/>.\n    /// </summary>\n    /// <param name=\"strategy\">The strategy instance.</param>\n    /// <returns>An instance of <see cref=\"ISyncPolicy\"/>.</returns>\n    /// <exception cref=\"ArgumentNullException\">Thrown when <paramref name=\"strategy\"/> is <see langword=\"null\"/>.</exception>\n    public static ISyncPolicy AsSyncPolicy(this ResiliencePipeline strategy)","sourceCodeStart":1,"sourceCodeEnd":35,"githubUrl":"https://github.com/App-vNext/Polly/blob/d0e46bdb1ee11ea50d0e4b6846d2633d6bc09bac/src/Polly/ResiliencePipelineConversionExtensions.cs#L1-L35","documentation":"Thrown by ResiliencePipelineConversionExtensions.AsAsyncPolicy(this ResiliencePipeline strategy) when strategy is null. The extension converts a v8 ResiliencePipeline into a legacy IAsyncPolicy adapter; a null pipeline cannot be wrapped.","triggerScenarios":"Calling ((ResiliencePipeline)null).AsAsyncPolicy() — typically when the pipeline variable was never assigned or a builder returned null.","commonSituations":"Migrating from legacy Polly to v8 pipelines; a pipeline built conditionally that stayed null; DI container returning null for a ResiliencePipeline registration.","solutions":["Build the ResiliencePipeline via new ResiliencePipelineBuilder()...Build() before converting.","Null-check the pipeline before calling AsAsyncPolicy.","Verify DI registration of the pipeline resolves a real instance."],"exampleFix":"// before\nResiliencePipeline pipeline = null;\nvar policy = pipeline.AsAsyncPolicy();\n// after\nvar pipeline = new ResiliencePipelineBuilder().AddRetry(new RetryStrategyOptions()).Build();\nvar policy = pipeline.AsAsyncPolicy();","handlingStrategy":"validation","validationCode":"if (pipeline is null) throw new InvalidOperationException(\"ResiliencePipeline is not built.\");\nvar policy = pipeline.AsAsyncPolicy();","typeGuard":"static bool IsPipelineReady(ResiliencePipeline pipeline) => pipeline is not null;","tryCatchPattern":null,"preventionTips":["Build the pipeline with ResiliencePipelineBuilder.Build() before converting.","Register ResiliencePipeline in DI as a singleton so it is always resolved.","Enable nullable reference types to catch null pipelines at compile time."],"tags":["resilience-pipeline","argumentnull","conversion","v8-migration","null-guard"],"backgroundTag":null,"analyzedSha":"d0e46bdb1ee11ea50d0e4b6846d2633d6bc09bac","analyzedAt":"2026-08-13T16:36:01.959Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}