private static void DisplayStructure(INodeViewModel root, int depth = 0) { Console.Write($"{new string(' ', depth)} {root.GetType().Name} {root.NodeType} {root.Value} "); var vNode = root.As <NodeValidationDecorator>(); if (vNode != null && vNode.ValidationState != null) { var lastColor = Console.ForegroundColor; Console.ForegroundColor = vNode.ValidationState.IsValid ? ConsoleColor.Green : ConsoleColor.Red; Console.Write($"{vNode.ValidationState.IsValid} \"{vNode.ValidationState.Message}\""); Console.ForegroundColor = lastColor; } Console.WriteLine(); foreach (var child in root.Children) { DisplayStructure(child, depth + 1); } }
public void ProcessNode(INodeViewModel node, IEnumerable <IValidationRule> rules) { var validNode = node.As <NodeValidationDecorator>(); if (validNode == null) { return; } var results = rules.Select(rule => rule.Validate(node, _treeConductor)).ToArray(); validNode.ValidationState = new CollectionValidationResult(results); }