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

PolicyBase

public abstract class PolicyBase
Implements elements common to both non-generic and generic policies, and sync and async policies.
using Polly.Utilities; using System; using System.Threading; namespace Polly { public abstract class PolicyBase { protected string policyKeyInternal; internal const bool DefaultContinueOnCapturedContext = false; internal readonly CancellationToken DefaultCancellationToken = CancellationToken.None; public string PolicyKey => policyKeyInternal ?? (policyKeyInternal = GetType().Name + "-" + KeyHelper.GuidPart()); protected internal ExceptionPredicates ExceptionPredicates { get; } internal static ArgumentException PolicyKeyMustBeImmutableException(string policyKeyParamName) { return new ArgumentException("PolicyKey cannot be changed once set; or (when using the default value after the PolicyKey property has been accessed.", policyKeyParamName); } internal static void RestorePolicyContext(Context executionContext, string priorPolicyWrapKey, string priorPolicyKey) { executionContext.PolicyWrapKey = priorPolicyWrapKey; executionContext.PolicyKey = priorPolicyKey; } internal virtual void SetPolicyContext(Context executionContext, out string priorPolicyWrapKey, out string priorPolicyKey) { priorPolicyWrapKey = executionContext.PolicyWrapKey; priorPolicyKey = executionContext.PolicyKey; executionContext.PolicyKey = PolicyKey; } internal static ExceptionType GetExceptionType(ExceptionPredicates exceptionPredicates, Exception exception) { if (exceptionPredicates.FirstMatchOrDefault(exception) == null) return ExceptionType.Unhandled; return ExceptionType.HandledByThisPolicy; } private protected PolicyBase(ExceptionPredicates exceptionPredicates) { ExceptionPredicates = (exceptionPredicates ?? ExceptionPredicates.None); } protected PolicyBase(PolicyBuilder policyBuilder) : this(policyBuilder?.ExceptionPredicates) { } } }