2

我正在尝试生成一个带有适当枚举的打字稿接口类。

我被困在如何获得枚举成员的价值上。

Enum.Members 获取 CodeElements,而不是 CodeProperties,如果我尝试强制转换,它就会中断。它也与 CodeEnum 中断。

我想要做的是获取值,以便它使用 value1 = 1, value2= 2 等来明确,而不仅仅是 value1, value2 因为枚举可能不是基于 0 的。

任何帮助将不胜感激。

4

1 回答 1

5

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

看看这个枚举:

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

而这个反映枚举的 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

希望有帮助。

于 2013-11-10T21:46:48.697 回答