我有一個我用VB.NET Windows應用程序處理的相當無意義的代碼列表。對於我正在編寫的處理這些代碼的業務邏輯,我想使用有意義的常量(如ServiceNotCovered
或MemberNotEligible
)而不是原始代碼(如"SNCV"
和"MNEL"
)。字符串值的符號常量的.NET枚舉
據我所知,枚舉只能映射到數值,而不是字符串。所以我能夠想到的最好的是一個靜態類,它將常量暴露爲內部設置爲等於代碼值的靜態只讀字符串字段,如下所示。
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
非靜態類,並給它設置和返回值的方式。
我想知道的是,是否有一種方法可以使用內置的枚舉功能來完成我正在做的事情,或者如果沒有,是否有這種類型的事物的任何標準設計模式。
我個人認爲你應該找到一種方式來驅動數據;就像這樣,如果你想出一個新的代碼,你必須重新編譯。我的鼻子不喜歡它。如果我有一個明確的答案,然後我會把一個下面。 – jcollum 2009-06-01 16:30:52
這取決於 - 如果新代碼總是意味着爲應用程序的各個部分制定不同的行爲,這似乎不太合理。 – 2009-06-01 16:34:49