我正在使用T4实现一些相当直接的代码生成,但是当涉及到属性生成的细节时,我仍然遇到了一个基本问题.当我访问我想要生成的CodeProperty对象的Type属性时,它们返回’System .__ ComObject’而不是属性的实际类型.
我正在使用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; } }
解决方法
看看文档,我怀疑你想要Asstring而不是ToString().那会叫
CodeTypeRef.AsString
:
Asstring return a string representation for the CodeTypeRef in the language being modeled. For example,if the vsCMTypeRef type is vsCMTypeRefInt,then the string would be “Int” for Visual C# and “Long” for Visual Basic.
我自己从来没有写过这种代码,所以我只是按文档编写,但值得一试:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。