T4获得Enum会员的价值

时间:2013-11-08 00:17:00

标签: c# t4

我正在尝试使用正确的枚举生成一个打字稿接口类。

我坚持如何获得枚举成员的价值。

Enum.Members获取CodeElements,而不是CodeProperties,如果我尝试施放,它会中断。它也打破了CodeEnum。

我要做的是获取值,使其显式为value1 = 1,value2 = 2等,而不仅仅是value1,value2,因为枚举可能不是基于0的。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

CodeElements”听起来好像您正在使用EnvDTE接口来访问您的枚举。如果是,则所有枚举项都在Members - EnvDTE.CodeEnum类型的属性中。它们的类型为EnvDTE.CodeVariable,显式值存储在变量的InitExpression中。

看看这个枚举:

    // C# Enum to reflect 
    public enum MyEnum { Hi = 10, There = 15 }

这个反映Enum的T4 CodeSnippet:

    <#
      // the enumeration object you already seem to have
      EnvDTE.CodeEnum theEnum;

      // iterate all enumeration items
      foreach(EnvDTE.CodeVariable variable in theEnum.Members)
      {
          // render name and value
          #><#= variable.Prototype #> = <#= variable.InitExpression.ToString() #>
    <#}
    #>

应该导致:

    Hi = 10
    There = 15

希望有所帮助。