/// <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())); } }
/// <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)); }