我有一个我用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