예제 #1
0
        /// <summary>
        /// Builds a <see langword="string"/> representing the <see cref="Expression"/>.
        /// </summary>
        /// <param name="builder">A <see cref="System.Text.StringBuilder"/> to add the created <see langword="string"/>.</param>
        internal override void BuildString(StringBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException("builder");
            }
            switch (NodeType)
            {
            case ExpressionType.Negate:
            case ExpressionType.NegateChecked:
                builder.Append("-");
                Operand.BuildString(builder);
                return;

            case ExpressionType.UnaryPlus:
                builder.Append("+");
                Operand.BuildString(builder);
                return;

            case ExpressionType.Not:
                builder.Append("Not");
                builder.Append("(");
                Operand.BuildString(builder);
                builder.Append(")");
                return;

            case ExpressionType.Quote:
                Operand.BuildString(builder);
                return;

            case ExpressionType.TypeAs:
                builder.Append("(");
                Operand.BuildString(builder);
                builder.Append(" As ");
                builder.Append(Type.Name);
                builder.Append(")");
                return;
            }
            builder.Append(NodeType);
            builder.Append("(");
            Operand.BuildString(builder);
            builder.Append(")");
        }