我有一个T4模板,可以为我的类编写DTO构造。我决定将以下代码添加到模板中:
<# if( prop.TypeUsage.EdmType.Name.ToLower() == "datetime" ) { #>
<#= [DisplayFormat(DataFormatString = "{0:mm/dd/yyyy}")] #>
<# } #>
当我编译它时,我得到一个错误说:“)预期”。当我查看T4构建的中间代码时,我看到以下内容:
#line 55 "C:\Users\Lou\Documents\Visual Studio 2010\Projects\...\DTO_Generator.tt" this.Write(Microsoft.VisualStudio.TextTemplating.ToStringHelper.ToStringWithCulture(//[DisplayFormat(DataFormatString = "{0:mm/dd/yyyy}")]));
显然,编译器在“[DisplayFormat(DataFormatString =”{0:mm / dd / yyyy}“)]”之前放置一个“//”,我要插入哪个正在删除')'该行的结尾。
我试图逃避并加倍“[”我认为是造成问题。
有关如何避免让T4将这些“//”放入代码的任何想法?
感谢。
答案 0 :(得分:2)
我不确定我明白你要做什么。 <#= ... #>
代码将...
评估为字符串并输出。如果您明确要输出[DisplayFormat(DataFormatString = "{0:mm/dd/yyyy}")]
,那么您应该使用:
<# if( prop.TypeUsage.EdmType.Name.ToLower() == "datetime" ) { #>
[DisplayFormat(DataFormatString = "{0:mm/dd/yyyy}")]
<# } #>