ServiceNotCovered
或MemberNotEligible
),而不是原始代码(如"SNCV"
和"MNEL"
)。据我所知,枚举只能映射到数字值,而不能映射到字符串。因此,我能想到的最好方法是使用静态类将常量公开为静态只读字符串字段,这些字段在内部设置为代码值,如下所示。
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
成为非静态类,并提供一种设置和返回值的方法。我想知道是否有一种方法可以使用内置的枚举功能来完成我正在做的事情,如果没有,是否有任何标准设计模式适用于这种类型的问题。