我使用T4實現了一些相當直接的代碼生成,但是當涉及到Property生成的細節時,我遇到了一個基本問題。當我訪問我想要生成的CodeProperty對象的Type屬性時,它們返回'System .__ ComObject'而不是實際的屬性類型。在T4模板中從CodeProperty中檢索屬性類型
我正在使用EnvDTE來查找包含我的自定義屬性的項目中的所有類。我使用這個標記來生成代碼。到現在爲止還挺好。然後我遍歷所有的CodeElement對象,這些對象是我的類的子對象。我可以找到所有的屬性,只是我無法獲得它們的'類型'。
這裏是我的T4的一個片段:
public class <#= cls.Name #>_DTO
{
<#
foreach (CodeElement child in cls.Children)
{
if (child.Kind == vsCMElement.vsCMElementProperty)
{
var prop = child as CodeProperty;
#>
public <#= prop.Type.ToString() + " " + child.Name #> { get; set; }
<#
}
}
}
#>
和輸出的一個樣本:
public class TestResult_DTO
{
public System.__ComObject TestType { get; set; }
}
正如你所看到的,我親近的有效輸出,它只是類型我正在努力訪問的財產。
的伎倆:) EnvDTE顯然是一個有用的工具,它打開但它並不是最直觀的圖書館。 –
幫助我呢!一個小提示:AsString是一個屬性而不是方法。 –
@Dave:謝謝 - 編輯。 –