やろうとしたこと
こんなシチュエーションです。
色々調べましたが、列挙型から整数へのキャスト自体、このやり方だと出来ないっぽい?
internal abstract class Hoge<T>
where T : Enum
{
private int ToInt(T value)
=> (int)value; // エラー
}
解決方法
「整数に変換するメソッド」をクラス内で使いたいだけだったので、
そのメソッドを抽象にして、派生クラスで定義してもらうようにしました。
internal abstract class Hoge<T>
where T : Enum
{
private protected abstract int ToInt(T value);
// ToInt() を使う
}
コメントからのアドバイス
1. Unsafe.BitCast
が使える
公式リファレンス
列挙型のサイズが決まっているならば、このメソッドが有用。
自分のプロジェクトではbyte
で統一しているので、↓↓こんな感じの拡張メソッドにしてみました。
internal static class MyExtension
{
internal static byte ToByteInteger<TEnum>(this TEnum value)
where TEnum : Enum
=> Unsafe.BitCast<TEnum, byte>(value);
}