Как определить, входит ли данное целое число в конкретное перечисление?

В VB.NET, даже с включенным Option Strict , можно передать Enum как целое число.

В моей конкретной ситуации кто-то использует перечисление, подобное этому:

Public Enum Animals
    Monkey = 1
    Giraffe = 2
    Leopard = 3
    Elephant = 4
End Enum

Но они передают его как целое число, поэтому они могут установить значение -1 как «Нет животных» (без необходимости включать «Нет» animal »в самом Enum), то есть:

Public Sub MakeAnimalJump(animalType As Int32)
    If animalType < 1 Then
        ' Clearly not an animal...
    Else
        ' Make that animal jump...
    End If
End Sub

Однако позже они снова просят, чтобы это был тип Animals. У меня вопрос, помимо а) изменения Enum для включения значения "None" или б) циклического перебора каждого значения в Enum с использованием [Enum] .GetValues ​​(...) , есть ли простой способ определить, соответствует ли данное целое число значению в перечислении или нет?

Я надеялся, что может быть [Enum] .TryParse или что-то в этом роде, но похоже, что это не так.

РЕДАКТИРОВАТЬ: Как некоторые из вас предположили, в .NET 4 есть Enum.TryParse. К сожалению, рассматриваемый проект все еще должен поддерживать Windows Server 2000, поэтому мы не можем использовать последнюю версию .NET Framework (надеюсь, мы скоро можно будет отказаться от поддержки Windows Server 2000 ..!).

19
задан oliver-clare 3 November 2011 в 14:18
поделиться