c# - 如何在 T4 CodeGen 中使用类的变量
问题描述
正如在倾斜中提到的,在大量的谷歌搜索之后,我无法弄清楚如何使用类中的变量,让我们说:
public class Candy
{
public Int Length;
}
在我的 EnumGen.tt 文件中!
“EnumGen.tt”看起来像:
<#@ template debug="true" hostSpecific="true" language="C#" #>
<#@ assembly name="System.dll" #>
<#@ import namespace="System" #>
<#@ parameter name="Length" type="System.Int32" #>
<#@ output extension=".cs" #>
<# int descrapancy = 20; #>
namespace Learning2D
{
public enum CandyDescrapancy
{
<#for(int i = 0; i < Length; i++) //Length shall be the class variable from the CandyClass
{
#>
index_<#=i.ToString()#> = <#=descrapancy#>,
<#descrapancy+=20;#>
<#}#>
}
}
注意:两个文件都在同一个命名空间中!
如果你能在这方面启发我,我会很高兴^^
此致
搁置
解决方案
不幸的是,你不能这样做。
请记住,T4 模板在编译时运行。他们无法引用您的变量的值,因为实际上还没有运行该代码。此时您的Candy
类甚至还没有编译,更不用说在其Length
字段中设置实际值的任何内容了。
T4 模板的目标是生成代码,然后与您的Candy
类一起编译,而不是使用同一程序集中的代码在运行时执行操作。
推荐阅读
- sql - 在case语句中使用where条件计算值的总和
- angular - 在 Angular 5 中获得带有 400 错误请求的 JSON 响应
- google-apps-script - 如何从电子表格的第一行返回所有值
- c# - 如何在 Wpf 中绑定图像大小和画布
- node.js - 尝试使用 Angular 作为我的路由器,但出现 NodeJS Server 'Cannot GET /[something]' 错误
- python - 如何将 Pandas 数据框保存到配置单元表?
- javascript - 在数字范围之间过滤以隐藏表格行(HTML,javascript)
- gradle - gradle build :使用变量作为工件名称
- java - 如何修复无法解析“CELL_TYPE_BLANK”?
- javascript - react-native 如何将功能组件更改为类组件