T4获得Enum会员的价值

Jam*_*ock 2 c# t4

我正在尝试生成一个带有适当枚举的typescript接口类.

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

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

我正在尝试做的是获取值,使其显式为value1 = 1,value2 = 2等,而不仅仅是value1,value2,因为枚举可能不是0.

任何帮助将不胜感激.

Nic*_*ico 5

" CodeElements"听起来好像您正在使用EnvDTE接口来访问您的枚举.如果是这样,所有枚举项都在MembersEnvDTE.CodeEnum类型的-Property中.它们属于类型EnvDTE.CodeVariable,显式值存储在InitExpressionVariable中.

看看这个枚举:

    // C# Enum to reflect 
    public enum MyEnum { Hi = 10, There = 15 }
Run Code Online (Sandbox Code Playgroud)

这个反映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() #>
    <#}
    #>
Run Code Online (Sandbox Code Playgroud)

应该导致:

    Hi = 10
    There = 15
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.