我有一个相当无意义的代码列表,我正在使用VB.NET Windows应用程序处理.对于我正在编写处理这些代码的业务逻辑,我想使用有意义的常量(如ServiceNotCovered或MemberNotEligible)而不是原始代码(如
据我所知,Enums只能映射到数值,而不能映射到字符串.因此,我能够提出的最好的是一个静态类,它将常量公开为静态只读字符串字段,这些字段在内部设置为等于代码值,如下所示.
Public Class MyClass private _reasonCode as String() Public Property ReasonCode() As String 'Getter and Setter... End Property Public Class ReasonCodeEnum Private Sub New() End Sub Public Shared ReadOnly ServiceNotCovered As String = "SNCV" Public Shared ReadOnly MemberNotEligible As String = "MNEL" 'And so forth... End Class End Class 'Calling method Public Sub ProcessInput() Dim obj As New MyClass() Select Case obj.ReasonCode Case MyClass.ReasonCodeEnum.ServiceNotCovered 'Do one thing Case MyClass.ReasonCodeEnum.MemberNotEligible 'Do something different 'Other enum value cases and default End Select End Sub
在上面的例子中,如果我可以将MyClass.ReasonCode定义为具有类型ReasonCodeEnum,那将是很好的,但是我必须使ReasonCodeEnum成为非静态类并给它一种设置和返回值的方法.
我想知道的是,是否有一种方法可以使用内置的Enum功能来完成我正在做的事情,或者如果没有,是否有任何标准设计模式适用于此类事情.
您可以使用我在此处发布的代码在VB.Net中模拟任何类型的自定义枚举:Getting static field values of a type using reflection