<PackageReference Include="Polly" Version="8.2.0" />

PolicyWrap

using System; using System.Diagnostics; using System.Threading; namespace Polly.Wrap { public class PolicyWrap : Policy, IPolicyWrap, IsPolicy { private readonly ISyncPolicy _outer; private readonly ISyncPolicy _inner; public IsPolicy Outer => _outer; public IsPolicy Inner => _inner; internal override void SetPolicyContext(Context executionContext, out string priorPolicyWrapKey, out string priorPolicyKey) { priorPolicyWrapKey = executionContext.PolicyWrapKey; priorPolicyKey = executionContext.PolicyKey; if (executionContext.PolicyWrapKey == null) executionContext.PolicyWrapKey = base.PolicyKey; base.SetPolicyContext(executionContext, out string _, out string _); } internal PolicyWrap(Policy outer, ISyncPolicy inner) : base(outer.ExceptionPredicates) { _outer = outer; _inner = inner; } [DebuggerStepThrough] protected override void Implementation(Action<Context, CancellationToken> action, Context context, CancellationToken cancellationToken) { PolicyWrapEngine.Implementation(action, context, cancellationToken, _outer, _inner); } [DebuggerStepThrough] protected override TResult Implementation<TResult>(Func<Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken) { return PolicyWrapEngine.Implementation(action, context, cancellationToken, _outer, _inner); } } }