我正在使用T4(C#(在运行时生成一些代码。然后,我将生成的代码存储在作为另一个模板一部分的字符串中。最终模板中的相关代码如下所示:
string myFinalString = @"<#=GetGeneratedCode()#>";
其中GetGeneratedCode()
是:
public string GetGeneratedCode()
{
MyTemplate temp = new MyTemplate (); //<- another T4 template
return temp.TransformText();
}
MyTemplate.TransformText
返回类似于以下内容的代码:
MyClass
{
int myVar1;
string myVar2;
}
问题是在我生成的源文件中,设置myFinalString
string myFinalString = @"MyClass
{
int myVar1;
string myVar2;
}";
为了可读性,我宁愿得到一个生成的常规字符串,如下所示:
string myFinalString = @"MyClassrn{rn int myVar1;rn string myVar2;rn}";
谁能帮我解决这个问题?
转义r
和n
字符应该有效。试试这个:
public string GetGeneratedCode()
{
MyTemplate temp = new MyTemplate (); //<- another T4 template
return temp.TransformText().Replace(Environment.NewLine, "\r\n");
}
使用逐字符号也可以:@"rn"