コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }