如何在C#中将任意int转换为任意泛型Enum?
枚举与int的双向转换问题
背景与正向转换可行方案
Enum并不强制要求是int类型,比如可以定义成如下形式:
public enum ExampleEnum : int / ulong / whatever
因此不能直接用强制转换的方式将枚举转成int:
int i = (int)exampleEnum;
但在我的场景中,虽然不确定具体使用的枚举类型,但能保证它是基于int类型的枚举,所以可以通过以下方式完成正向转换:
int i = Convert.ToInt32(exampleEnum);
逆向转换的问题
现在需要实现逆向转换(将int转回Enum),尝试编写如下代码时:
Enum exampleEnum = (Enum)exampleInt;
会触发错误提示:
无法将int类型的表达式转换为Enum类型
同时也找不到与Convert.ToInt32(Enum)对应的逆向转换方法。
场景补充
我正在编写一个支持任意Enum类型的通用GUI方法:
public static int EditorPrefEnumField(string label, Enum defaultValue, string editorPrefString)
必须实现Enum与int之间的双向转换才能完成预期功能。
内容的提问来源于stack exchange,提问作者danglingPointer
相关产品推荐
相关产品推荐

