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);
}
}
}
}
}