Подтвердить что ты не робот

Получить значение Integer перечисления, которое является общим

Вот основная ситуация.

Public Class MyEnumClass(of T)
   Public MyValue as T
End Class

Это обширное упрощение фактического класса, но в основном я знаю, что T является перечислением (если это не так, тогда будет много других проблем и является логической ошибкой, сделанной программистом)

В принципе, я хочу получить базовое целочисленное значение MyValue.

Использование Cint или Ctype не работает.

4b9b3361

Ответ 1

Я собирался использовать классный кусок кода отражения, но просто простой Convert.ToInt32 отлично работает... Простите мой VB я ' m a С# guy

Public Function GetEnumInt(Of T)(enumVal As T) As Integer
    Return Convert.ToInt32(enumVal)
End Function

Ответ 2

Я пробовал это, и он работал:

String.Format("{0:d}", MyValue)

Ответ 3

Я знаю, что вы можете сделать следующее, чтобы получить все базовые значения (я надеюсь, что мой синтаксис VB верен... Я работал в С# в основном в последнее время):

Dim intVal As Integer

For Each intVal In  [Enum].GetValues(GetType(T))
    //intValue is now the enum integer value
Next

Это может по крайней мере начать работать в правильном направлении.

Ответ 4

Еще один простой способ в VB.NET - добавить его в 0:

Dim intVal As Integer = 0 + myEnum

Итак, это должно работать:

Sub GetEnumInt(of T)(enumVal as T) as Int
   return 0 + enumVal
End Sub

Ответ 5

Это также работает: Fix(enumval)