これが基本的な状況です。
Public Class MyEnumClass(of T)
Public MyValue as T
End Class
これは実際のクラスを大幅に単純化しすぎですが、基本的にはTが列挙型であることを知っています(そうでない場合、他の多くの問題が発生し、プログラマーによって論理エラーが発生します)。
基本的には、MyValueの基になる整数値を取得したいと考えています。
CintまたはCtypeを使用しても機能しません。
クールなリフレクションコードを使用するつもりでしたが、単純な Convert.ToInt32
うまくいきます...許してくださいVB私はC#の人です
Public Function GetEnumInt(Of T)(enumVal As T) As Integer
Return Convert.ToInt32(enumVal)
End Function
私はこれを試してみましたがうまくいきました:
String.Format("{0:d}", MyValue)
すべての基本的な値を取得するために次のことができることを知っています(VB構文が正しいことを願っています...私は最近C#で作業してきました):
Dim intVal As Integer
For Each intVal In [Enum].GetValues(GetType(T))
//intValue is now the enum integer value
Next
そうすれば、少なくとも正しい方向に進むことができます。
これも機能します:Fix(enumval)
VB.NETのもう1つの簡単な方法は、0に追加することです。
Dim intVal As Integer = 0 + myEnum
だから、これはうまくいくはずです:
Sub GetEnumInt(of T)(enumVal as T) as Int
return 0 + enumVal
End Sub