示例#1
0
 public override void Visit(AndSpecNode <T> andSpecNode)
 {
     if (_not)
     {
         Visit(MoveNotDown(new NotSpecNode <T>(andSpecNode)));
     }
     else
     {
        public override void Visit(AndSpecNode <T> andSpecNode)
        {
            var takenNot = _notNodes.Peek();

            _notNodes.Push(takenNot);
            base.Visit(andSpecNode);
            var rightNode = _nodes.Pop();
            var leftNode  = _nodes.Pop();

            _nodes.Push(takenNot
                                ? (ISpecNode <T>) new OrSpecNode <T>(leftNode, rightNode)
                                : rightNode != andSpecNode.RightNode || leftNode != andSpecNode.LeftNode
                                        ? new AndSpecNode <T>(leftNode, rightNode)
                                        : andSpecNode);
        }
 public virtual void Visit(AndSpecNode <T> andSpecNode)
 {
     Visit(andSpecNode.LeftNode);
     Visit(andSpecNode.RightNode);
 }