コード例 #1
0
 /// <summary>
 /// Visits a block expression slim tree node, produces a block expression.
 /// </summary>
 /// <param name="node">Node to visit.</param>
 /// <param name="variables">Variables in the block.</param>
 /// <param name="expressions">Expression slims in the block.</param>
 /// <returns>The block expression represented by the expression slim node.</returns>
 protected override Expression MakeBlock(BlockExpressionSlim node, ReadOnlyCollection <ParameterExpression> variables, ReadOnlyCollection <Expression> expressions)
 {
     if (node.Type != null)
     {
         var type = MakeType(node.Type);
         return(_factory.Block(type, variables, expressions));
     }
     else
     {
         return(_factory.Block(variables, expressions));
     }
 }
コード例 #2
0
        protected internal override ExpressionSlim VisitBlock(BlockExpressionSlim node)
        {
            // CONSIDER: Block can have a custom type which has been historically omitted here. We can consider adding it later.

            Append("Block(");
            Visit(", ", node.Variables);
            if (node.Variables.Count > 0)
            {
                Append("; ");
            }
            Visit("; ", node.Expressions);
            Append(')');

            return(node);
        }
コード例 #3
0
 /// <summary>
 /// Visits a block expression tree node.
 /// </summary>
 /// <param name="node">Node to visit.</param>
 /// <returns>Result of visiting the node.</returns>
 protected internal virtual ExpressionSlim VisitBlock(BlockExpressionSlim node)
 {
     return(node.Update(VisitAndConvert(node.Variables), Visit(node.Expressions)));
 }