Получить значение Integer перечисления, которое является общим
Вот основная ситуация.
Public Class MyEnumClass(of T)
Public MyValue as T
End Class
Это обширное упрощение фактического класса, но в основном я знаю, что T является перечислением (если это не так, тогда будет много других проблем и является логической ошибкой, сделанной программистом)
В принципе, я хочу получить базовое целочисленное значение MyValue.
Использование Cint или Ctype не работает.
Ответы
Ответ 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)