【发布时间】:2014-04-04 03:34:43
【问题描述】:
我正在使用 T4 实现一些相当直接的代码生成,但是在涉及到属性生成的细节时,我遇到了一个基本问题。当我访问要生成的 CodeProperty 对象的 Type 属性时,它们返回的是“System.__ComObject”,而不是属性的实际类型。
我正在使用 EnvDTE 查找项目中包含我的自定义属性的所有类。我正在使用它来标记某些类以进行代码生成。到目前为止,一切都很好。然后,我将遍历作为我班级子级的所有 CodeElement 对象。我可以找到所有属性,只是我无法获取它们的“类型”。
这是我的 T4 的 sn-p:
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; }
}
如您所见,我已接近有效输出,这只是我正在努力访问的属性的类型。
【问题讨论】:
标签: c# visual-studio code-generation envdte