Я ищу более чистый способ, чем то, что я собираюсь представить, чтобы ограничить возможные значения свойства string. Предположим, у меня есть класс со свойством «Направление»Элегантный способ ограничения возможных значений свойства string
Public Class Location
Private _Direction As String
Public Property Direction() As String
Get
Return _Direction
End Get
Set(ByVal value As String)
_Direction = value
End Set
End Property
End Class
Так предположим, что я хочу, чтобы ограничить возможные значения направлении «Север», «Юг», «Восток» и «Запад». Я понимаю, что я мог бы сделать что-то вроде этого:
Public Class Location
Private ValidDirection As New Collection
Public Sub New
ValidDirection.Add("1", "North")
...
End Sub
Private _Direction As String
Public Property Direction() As String
Get
Return _Direction
End Get
Set(ByVal value As String)
If Me.ValidDirection.Contains(value) Then
_Direction = value
Else
Throw New Exception("Invalid direction.")
End If
End Set
End Property
End Class
Но если я случайно создать много Location
с, то я создал эту коллекцию снова и снова. Для этого примера это не так уж и важно, но предположим, что у меня есть 25 возможностей для 5 или более свойств, и я создаю сотни или тысячи Location
s, затем он начинает складываться.
Есть ли лучший способ достичь этого?
Следует также отметить, что на всякий случай это усложняет ситуацию, что я хотел бы перевести ввод в принятое значение в определенных случаях. Например, используется «N», и я хотел бы автоматически превратить это в «Север».
Любые идеи?
Определите одну или несколько Enums, и большая часть кода проверки может исчезнуть - если указатель направления «Как myEnum» не требует проверки. для строкового представления вы можете использовать 'enumDirection.Tostring' – Plutonix
А, я знал о' .ToString', но не понимал, что так работает с Enums. Спасибо. Я подозревал, что Enums - это способ достичь этого, но я не мог пройти мимо, не используя числовое значение. – MattB