public static void AddRule(Type type, PropertyInfo pi, ValidateAttribute attr) { var typeRules = TypePropertyRulesMap.TryGetValue(type, out var rules) ? rules : TypePropertyRulesMap[type] = new List <IValidationRule>(); var rule = typeRules.FirstOrDefault(x => (x as PropertyRule)?.PropertyName == pi.Name); if (rule == null) { typeRules.Add(rule = CreatePropertyRule(type, pi)); } var validators = (List <IPropertyValidator>)rule.Validators; validators.AddRule(pi, attr); }
public static void AddRule(Type type, string name, ValidateAttribute attr) => AddRule(type, type.GetProperty(name), attr);