示例#1
0
            /// <summary>
            /// Rewrites exclusive or expression.
            /// </summary>
            /// <param name="exclusiveOrExpression">Expression to rewrite.</param>
            /// <returns>Expression rewritten as code snippet.</returns>
            private CodeSnippetExpression RewriteExclusiveOrExpression(CodeExclusiveOrExpression exclusiveOrExpression)
            {
                using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture))
                {
                    sw.Write("(");
                    this.generator.GenerateCodeFromExpression(exclusiveOrExpression.Left, sw, null);
                    sw.Write(" ^ ");
                    this.generator.GenerateCodeFromExpression(exclusiveOrExpression.Right, sw, null);
                    sw.Write(")");

                    return(new CodeSnippetExpression(sw.ToString()));
                }
            }
示例#2
0
            /// <summary>
            /// Rewrites CodeExpression
            /// </summary>
            /// <param name="e">A CodeExpression to be rewritten.</param>
            /// <param name="didRewrite">A value which will be set to true if the rewriting returned a new object.</param>
            /// <returns>Rewritten CodeExpression.</returns>
            protected override CodeExpression Rewrite(CodeExpression e, ref bool didRewrite)
            {
                CodeLambdaExpression lambdaExpression = e as CodeLambdaExpression;

                if (lambdaExpression != null)
                {
                    didRewrite = true;
                    return(this.RewriteLambdaExpression(lambdaExpression));
                }

                CodeQueryExpression queryExpression = e as CodeQueryExpression;

                if (queryExpression != null)
                {
                    didRewrite = true;
                    return(this.RewriteComprehensionExpression(queryExpression));
                }

                CodeCreateAndInitializeObjectExpression objectCreateExpression = e as CodeCreateAndInitializeObjectExpression;

                if (objectCreateExpression != null)
                {
                    didRewrite = true;
                    return(this.RewriteCreateAndInitializeObjectExpression(objectCreateExpression));
                }

                CodeArrayInitializerExpression arrayInitializer = e as CodeArrayInitializerExpression;

                if (arrayInitializer != null)
                {
                    didRewrite = true;
                    return(this.RewriteArrayInitializerExpression(arrayInitializer));
                }

                CodeExclusiveOrExpression exclusiveOrExpression = e as CodeExclusiveOrExpression;

                if (exclusiveOrExpression != null)
                {
                    didRewrite = true;
                    return(this.RewriteExclusiveOrExpression(exclusiveOrExpression));
                }

                CodeAsExpression asExpression = e as CodeAsExpression;

                if (asExpression != null)
                {
                    didRewrite = true;
                    return(this.RewriteAsExpression(asExpression));
                }

                CodeIsExpression isExpression = e as CodeIsExpression;

                if (isExpression != null)
                {
                    didRewrite = true;
                    return(this.RewriteIsExpression(isExpression));
                }

                CodePrimitiveExpression primitiveExpression = e as CodePrimitiveExpression;

                if (primitiveExpression != null)
                {
                    return(this.RewritePrimitiveExpression(primitiveExpression, ref didRewrite));
                }

                var ternaryExpression = e as CodeTernaryExpression;

                if (ternaryExpression != null)
                {
                    didRewrite = true;
                    return(this.RewriteTernaryExpression(ternaryExpression));
                }

                var anonymousArray = e as CodeAnonymousArrayExpression;

                if (anonymousArray != null)
                {
                    didRewrite = true;
                    return(this.RewriteAnonymousArrayExpression(anonymousArray));
                }

                return(base.Rewrite(e, ref didRewrite));
            }