Bifrost.FluentValidation.MetaData.ValidationMetaDataGenerator.GenerateForValidator C# (CSharp) Method

GenerateForValidator() private method

private GenerateForValidator ( IValidator inputValidator, Bifrost.Validation.MetaData.TypeMetaData metaData, string parentKey, bool isParentConcept = false, bool isParentModelRule = false ) : void
inputValidator IValidator
metaData Bifrost.Validation.MetaData.TypeMetaData
parentKey string
isParentConcept bool
isParentModelRule bool
return void
        void GenerateForValidator(IValidator inputValidator, TypeMetaData metaData, string parentKey, bool isParentConcept = false, bool isParentModelRule = false)
        {
            var inputValidatorType = inputValidator.GetType();
            var genericArguments = inputValidatorType.BaseType.GetGenericArguments();

            var descriptor = inputValidator.CreateDescriptor();
            var members = descriptor.GetMembersWithValidators();
            
            foreach (var member in members)
            {
                var rules = descriptor.GetRulesForMember(member.Key);
                foreach (var rule in rules)
                {
                    foreach (var validator in rule.Validators)
                    {
                        var isModelRule = member.Key == ModelRule<string>.ModelRulePropertyName;
                        var currentKey = GetKeyForMember(parentKey, isParentConcept, isParentModelRule, member, isModelRule);

                        if (validator is ChildValidatorAdaptor)
                        {
                            GenerateForChildValidator(metaData, genericArguments, member, validator, isModelRule, currentKey);
                        }
                        else if (validator is IPropertyValidator)
                        {
                            GenerateFor(metaData, currentKey, validator);
                        }
                    }
                }
            }
        }