none
VB.NET WinForm如何在enum中使用描述 RRS feed

  • 问题

  • 比如我在Enum中定义了一项如:
    Enum CalcMethod
        FixedPrice = 0
    End Enum

    我希望在toString()的时候是Fixed Price
    应该如何实现这个功能?

    2009年3月13日 4:18

答案

  •  
    Imports System  
    Imports System.Reflection  
     
    Enum Coolness As Byte 
        <Description("Not so cool")> _  
        NotSoCool = 5  
        Cool  
    End Enum 
     
    Class Description  
        Inherits Attribute  
        Public Text As String 
        Public Sub New(ByVal text__1 As String)  
            Text = text__1  
        End Sub 
    End Class 
     
    Module Module1  
     
        Private Function GetDescription(ByVal en As [Enum]) As String 
            Dim type As Type = en.[GetType]()  
            Dim memInfo As MemberInfo() = type.GetMember(en.ToString())  
            If memInfo IsNot Nothing AndAlso memInfo.Length > 0 Then 
                Dim attrs As Object() = memInfo(0).GetCustomAttributes(GetType(Description), False)  
                If attrs IsNot Nothing AndAlso attrs.Length > 0 Then 
                    Return DirectCast(attrs(0), Description).Text  
                End If 
            End If 
            Return en.ToString()  
        End Function 
        Sub Main(ByVal args As String())  
            Dim coolType1 As Coolness = Coolness.Cool  
            Dim coolType2 As Coolness = Coolness.NotSoCool  
            Console.WriteLine(GetDescription(coolType1))  
            Console.WriteLine(GetDescription(coolType2))  
            Console.ReadLine()  
        End Sub 
     
    End Module 

    http://feiyun0112.cnblogs.com/
    2009年3月17日 2:04
    版主

全部回复

  •  

    Enum letters

    a

    b

    c

    End Enum

    return ystem.Enum.GetName(GetType(letters), 0)  



    "a"


    热烈庆祝进入4星活跃用户队伍
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年3月13日 4:24
  • 其实我想得到的是:如"a is a"
    2009年3月13日 4:30


  • 帮忙转成VB.net代码吧,小弟我看不懂啊...
    2009年3月13日 5:56
  • 楼主,你好

    你可以到这个网站将VC#的代码转化成VB.NET.

    http://www.developerfusion.com/tools/convert/csharp-to-vb/


    Microsoft Online Community Support
    2009年3月16日 7:23
  •  
    Imports System  
    Imports System.Reflection  
     
    Enum Coolness As Byte 
        <Description("Not so cool")> _  
        NotSoCool = 5  
        Cool  
    End Enum 
     
    Class Description  
        Inherits Attribute  
        Public Text As String 
        Public Sub New(ByVal text__1 As String)  
            Text = text__1  
        End Sub 
    End Class 
     
    Module Module1  
     
        Private Function GetDescription(ByVal en As [Enum]) As String 
            Dim type As Type = en.[GetType]()  
            Dim memInfo As MemberInfo() = type.GetMember(en.ToString())  
            If memInfo IsNot Nothing AndAlso memInfo.Length > 0 Then 
                Dim attrs As Object() = memInfo(0).GetCustomAttributes(GetType(Description), False)  
                If attrs IsNot Nothing AndAlso attrs.Length > 0 Then 
                    Return DirectCast(attrs(0), Description).Text  
                End If 
            End If 
            Return en.ToString()  
        End Function 
        Sub Main(ByVal args As String())  
            Dim coolType1 As Coolness = Coolness.Cool  
            Dim coolType2 As Coolness = Coolness.NotSoCool  
            Console.WriteLine(GetDescription(coolType1))  
            Console.WriteLine(GetDescription(coolType2))  
            Console.ReadLine()  
        End Sub 
     
    End Module 

    http://feiyun0112.cnblogs.com/
    2009年3月17日 2:04
    版主
  • 谢谢大家的答复!
    2009年3月17日 2:19