【发布时间】:2011-07-19 17:55:46
【问题描述】:
我正在尝试使用 CodeDom 创建一个Console.WriteLine 语句(如下所示)。这给了我主要是因为 Environment.NewLine 调用 - 我无法弄清楚在 Console.WriteLine 调用中嵌入方法的 正确 方式。我将向您展示我正在尝试生成的代码以及我正在使用的代码。也许有人能够抓住并纠正我的错误。
我希望生成的代码:
Console.WriteLine("Error reading from source: " + Environment.NewLine + "Error code: " + ex.Message);
我正在使用的代码:
const char quote = '\u0022'; // Represents a " mark
CodeMethodInvokeExpression invoke = new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression("Console"), "WriteLine",
new CodeExpression[] {
new CodeVariableReferenceExpression(quote + "Error reading from source: " + quote + " + "),
new CodeFieldReferenceExpression("Environment"), "NewLine"),
new CodeVariableReferenceExpression("+ " + quote + "Error code: " + quote + " + " + "ex" + ".Message")})));
正在生成的代码:
Console.WriteLine("Error reading source: " + , Environment.NewLine, + "Error code: " + ex.Message);
因为我使用的是MethodInvoke,CodeDom 用“,”分隔每一行,就好像它们是同一个方法中的每个新参数......我该如何解决这个问题 proper 方式?
【问题讨论】:
-
你可以使用程序员的方法来解决问题——忽略它们。你可以试试
"Error reading source: {0} Error code: {1}"... -
这也更干净:)
标签: c# methods codedom console.writeline