none
ENUMs: Añadir una descripción para cada valor.

    Pregunta

  • Hola:

    Cuando se crea una enumeración, se pueden poner descripciones a cada elemento/valor, pero no se ven en Visual Studio. Quiero hacer lo mismo que una enumeración de .NET, por ejemplo, si yo escribo:

    Dim n = MsgBoxResult.Yes

    Si te pones encima de .Yes, el Visual Studio muestra: 

    "Yes button was pressed. This member is equivalent to the Visual Basic constant vbYes."

    Pues quiero hacer eso mismo con una enumeración propia.

     Public Enum PRUEBA
         <Description("Esta es la descripción del elemento 1, pero no sale en Visual Studio")>
         Elemento1 = 1
         <Description("Esta es la descripción del elemento 2, pero no sale en Visual Studio")>
         Elemento2 = 2
     End Enum

    Un saludo



    • Editado LG DES miércoles, 19 de octubre de 2016 15:17
    miércoles, 19 de octubre de 2016 15:16

Respuestas

  • Module Module1
    
        ''' <summary>
        ''' Algo es algo
        ''' </summary>
        Public Enum Algo
            ''' <summary>pepe es el número uno</summary>
            pepe = 1
            ''' <summary>josé no</summary>
            josé = 2
        End Enum
    
        Sub Main()
            Dim p As Algo = Algo.pepe
        End Sub
    
    End Module
    

    • Marcado como respuesta LG DES miércoles, 19 de octubre de 2016 16:06
    miércoles, 19 de octubre de 2016 15:37

Todas las respuestas

  • Module Module1
    
        ''' <summary>
        ''' Algo es algo
        ''' </summary>
        Public Enum Algo
            ''' <summary>pepe es el número uno</summary>
            pepe = 1
            ''' <summary>josé no</summary>
            josé = 2
        End Enum
    
        Sub Main()
            Dim p As Algo = Algo.pepe
        End Sub
    
    End Module
    

    • Marcado como respuesta LG DES miércoles, 19 de octubre de 2016 16:06
    miércoles, 19 de octubre de 2016 15:37
  • Hola:

     Las descripciones como tal puestas a un elemento de un Enum no saldras en el Intelligesense de Vs, si esto es lo que estas esperando, estas descripciones podrías recuperarlas pero no es de manera automática:

    Enum:

    Imports System.ComponentModel
    Imports System.Reflection
    
    Public Enum MyColors
    	<Description("The Color of my skin")> 
    	White
    	<Description("Bulls like this color")>
    	Red
    	<Description("The color of slime")>
    	Green
    End Enum

    Recuperar la descripción de un elemento:

    Public Shared Function GetDescription(enumValue As Object, defDesc As String) As String
    	Dim fi As FieldInfo = enumValue.[GetType]().GetField(enumValue.ToString())
    
    	If fi IsNot Nothing Then
    		Dim attrs As Object() = fi.GetCustomAttributes(GetType(DescriptionAttribute), True)
    		If attrs IsNot Nothing AndAlso attrs.Length > 0 Then
    			Return DirectCast(attrs(0), DescriptionAttribute).Description
    		End If
    	End If
    
    	Return defDesc
    End Function
     Como veras, para poder recuperar las descripción te valdrás de una función.

    Fuente:

    Adding Descriptions to your Enumerations

    El código fue traducido usando esta herramienta online (por lo cual podría contener errores sintácticos):

    converter.telerik.com

     Espero que te sea de utilidad la informacion.


    Saludos desde Monterrey, Nuevo León, México!!!

    miércoles, 19 de octubre de 2016 15:44
  • Te juro y perjuro que lo habia probado con ''', y con ' <summary>, pero no con ''' <sumary>" ;-)

    Gracias

    Un saludo

    EDITO: Mas rabia todavia, lo había probado pero SIN el espacio, es decir:

    '''<summary> sin espacio no funciona!!!</summary>

    ''' <summary> con espacio funciona</summary>


    • Editado LG DES miércoles, 19 de octubre de 2016 16:08
    miércoles, 19 de octubre de 2016 16:06