private static async void ValidateModel(EditContext editContext,
                                                ValidationMessageStore messages,
                                                IServiceProvider serviceProvider,
                                                bool disableAssemblyScanning,
                                                FluentValidationValidator fluentValidationValidator,
                                                IValidator validator = null)
        {
            validator ??= GetValidatorForModel(serviceProvider, editContext.Model, disableAssemblyScanning);

            if (validator is object)
            {
                var context = ValidationContext <object> .CreateWithOptions(editContext.Model, fluentValidationValidator.options ?? (opt => opt.IncludeAllRuleSets()));

                var validationResults = await validator.ValidateAsync(context);

                messages.Clear();
                foreach (var validationResult in validationResults.Errors)
                {
                    var fieldIdentifier = ToFieldIdentifier(editContext, validationResult.PropertyName);
                    messages.Add(fieldIdentifier, validationResult.ErrorMessage);
                }

                editContext.NotifyValidationStateChanged();
            }
        }
        public static EditContext AddFluentValidation(this EditContext editContext, IServiceProvider serviceProvider, bool disableAssemblyScanning, IValidator validator, FluentValidationValidator fluentValidationValidator)

        {
            if (editContext == null)
            {
                throw new ArgumentNullException(nameof(editContext));
            }

            var messages = new ValidationMessageStore(editContext);

            editContext.OnValidationRequested +=
                (sender, eventArgs) => ValidateModel((EditContext)sender, messages, serviceProvider, disableAssemblyScanning, fluentValidationValidator, validator);

            editContext.OnFieldChanged +=
                (sender, eventArgs) => ValidateField(editContext, messages, eventArgs.FieldIdentifier, serviceProvider, disableAssemblyScanning, validator);

            return(editContext);
        }