2011-06-28 44 views
2

我有一個T4模板,爲我的類寫入DTO構造。我決定將下面的代碼添加到模板中:T4編譯器在代碼之前放置註釋'['

<# if(prop.TypeUsage.EdmType.Name.ToLower() == "datetime") { #> 
    <#= [DisplayFormat(DataFormatString = "{0:mm/dd/yyyy}")] #> 
<# } #> 

當我編譯它時出現一個錯誤:「)expected」。當我看那個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:毫米/ dd/yyyy}「)]」我想要插入的是刪除該行末尾的')'。

我試圖逃脫並加倍「我」認爲是導致問題。

有關如何避免T4將這些「//」放入代碼中的任何想法?

謝謝。

回答

2

我不知道我明白你在做什麼。 <#= ... #>代碼將...評估爲一個字符串並將其輸出。如果你明確希望[DisplayFormat(DataFormatString = "{0:mm/dd/yyyy}")]是輸出,那麼你應該使用:

<# if(prop.TypeUsage.EdmType.Name.ToLower() == "datetime") { #> 
[DisplayFormat(DataFormatString = "{0:mm/dd/yyyy}")] 
<# } #> 
+0

是的,你說得對。這樣可行。謝謝 – Weej

相關問題