如何对枚举实例基类进行类型检查

本文关键字:类型 检查 基类 实例 枚举 | 更新日期: 2023-09-27 18:25:17

我有一个从字节派生的枚举类型。在我的公共库中,有时会将枚举参数强制转换为int。问题是,当我的字节派生枚举到达公共库中的那个方法时,转换为int失败并引发异常。

有没有一种方法可以对枚举的基类进行类型检查,这样我就可以只对基于Int的枚举进行Int强制转换?

以下是两个示例枚举:

enum DaysByte : byte { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
enum DaysInt  : int  { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri }; 

如何对枚举实例基类进行类型检查

您可以使用Enum.GetUnderlyingType方法

Enum.GetUnderlyingType(typeof(YourEnum)) == typeof(int)
// or via enum value
Enum.GetUnderlyingType(yourEnumValue.GetType()) == typeof(int)