Pergunta

Estou tentando gerar uma classe de interfaces datilografadas completa com enumes adequados.

Estou preso sobre como obter o valor do membro da enum.

Enum.members obtém codelements, não codeproperties e, se eu tentar lançar, isso quebra. Também quebra com o Codeenum.

O que estou tentando fazer é obter o valor para que seja explícito com o valor1 = 1, value2 = 2 etc. em vez de apenas valor1, valor2 porque as enumes podem não ser baseadas em 0.

Qualquer ajuda seria muito apreciada.

Foi útil?

Solução

"CodeElements"Parece como se você estivesse usando as interfaces Envdte para obter acesso às suas enumerações. Se sim, todos os itens de enum estão no Members-Property of the EnvDTE.CodeEnum modelo. Eles são do tipo EnvDTE.CodeVariable e o valor explícito é armazenado no InitExpression da variável.

Dê uma olhada nesta enumeração:

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

E este código T4, refletindo a enumeração:

    <#
      // 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() #>
    <#}
    #>

Deve resultar em:

    Hi = 10
    There = 15

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top