/// <summary> /// Gets the property names. /// </summary> /// <param name="withChildren">если присвоено значение <c>true</c>, то [with children].</param> /// <returns>List<System.String>.</returns> public List <string> GetPropertyNames(bool withChildren = true) { var result = new List <string>(_errors.Keys); if (withChildren) { validationTargets.ForEach(pair => { var fullNames = pair.Value.GetPropertyNames() .Where(name => !string.IsNullOrEmpty(name)) .Select(name => DottedPathSplitter.Combine(pair.Key, name)); result.AddRange(fullNames); }); } return(result); }
private bool SplitAndFindChildValidation(string propertyName, out RsValidationBase validation, out string propertyTail) { // делим на части имя свойства, если оно составное ишем по первой части дочерний объект валидации // и отдаем оставшуюся часть пути на обработку ниже var nodes = DottedPathSplitter.Split(propertyName); propertyTail = nodes.Tail; validation = null; if (!string.IsNullOrEmpty(nodes.Tail) && !string.IsNullOrEmpty(nodes.Head)) { if (validationTargets.ContainsKey(nodes.Head)) { validation = validationTargets[nodes.Head]; return(true); } } return(false); }