我正在使用CodeDom生成C#代码,其中一部分涉及吐出String变量内容。有时,这些字符串可能会很长。
有没有办法阻止CodeDom代码生成器将这些大字符串拆分成更小的块?生成器的作用是将长字符串拆分为几个较小的字符串,并在其间插入连接运算符。虽然代码编译得很好,但我不喜欢它如何弄乱我的代码的可读性。
答案 0 :(得分:4)
private void GeneratePrimitiveExpressionBase(CodePrimitiveExpression e)
{
...
else if (e.Value is string)
{
this.Output.Write(this.QuoteSnippetString((string) e.Value));
}
...
}
和......这个:
private string QuoteSnippetString(string value)
{
if (((value.Length >= 0x100) && (value.Length <= 0x5dc)) && (value.IndexOf('\0') == -1))
{
return this.QuoteSnippetStringVerbatimStyle(value);
}
return this.QuoteSnippetStringCStyle(value);
}
如果你进一步挖掘,两个功能都是不可配置的。
答案 1 :(得分:2)
我想我已经找到了解决这个问题的方法:简而言之,我没有使用CodePrimitiveExpression来输出我的字符串,而是通过显式引用我的字符串参数来使用CodeSnippetExpression。
CodeExpression x = new CodeSnippetExpression("\"" + myLongString + "\"");
适用于我必须使用它的少数情况,但我当然没有测试过所有场景。