ValidationHelper
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Text;
namespace Polly.Utils
{
    [System.Runtime.CompilerServices.NullableContext(1)]
    [System.Runtime.CompilerServices.Nullable(0)]
    [ExcludeFromCodeCoverage]
    internal static class ValidationHelper
    {
        private static readonly object ValidatorLock = new object();
        [System.Runtime.CompilerServices.NullableContext(2)]
        [return: System.Runtime.CompilerServices.Nullable(new byte[] {
            2,
            1
        })]
        public static string[] GetMemberName(this ValidationContext validationContext)
        {
            string text = validationContext?.MemberName;
            if (text == null)
                return null;
            return new string[1] {
                text
            };
        }
        public static string GetDisplayName([System.Runtime.CompilerServices.Nullable(2)] this ValidationContext validationContext)
        {
            return validationContext?.DisplayName ?? string.Empty;
        }
        [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, typeof(TimeSpan))]
        [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "The member of options are preserved and not trimmed. See builder.AddStrategy() extension.")]
        public static void ValidateObject(ResilienceValidationContext context)
        {
            Guard.NotNull(context, "context");
            List<ValidationResult> list = new List<ValidationResult>();
            bool flag = default(bool);
            lock (ValidatorLock) {
                flag = Validator.TryValidateObject(context.Instance, new ValidationContext(context.Instance), list, true);
            }
            if (!flag) {
                StringBuilder stringBuilder = new StringBuilder(context.PrimaryMessage);
                stringBuilder.AppendLine();
                stringBuilder.AppendLine("Validation Errors:");
                foreach (ValidationResult item in list) {
                    stringBuilder.AppendLine(item.ErrorMessage);
                }
                throw new ValidationException(stringBuilder.ToString());
            }
        }
    }
}