将int转换为枚举的正确方法

可能重复:
在int中将int转换为Enum

我从数据库中获取一个int值,并希望将该值转换为一个枚举变量。 在99.9%的情况下,int将与枚举声明中的一个值匹配

public enum eOrderType {
    Submitted = 1,
    Ordered = 2,
    InReview = 3,
    Sold = 4,
    ...
}

eOrderType orderType = (eOrderType) FetchIntFromDb();

在边缘情况下,值将不匹配(无论是数据损坏还是手动进入并混淆数据)。

我可以使用switch语句并捕获default并修复这种情况,但感觉不对。 必须有一个更优雅的解决方案。

有任何想法吗?


你可以做

int value = FetchIntFromDb();
bool ok = System.Enum.GetValues(typeof(eOrderType)).Cast<int>().Contains(value);

或者说我会将GetValues()结果缓存在一个静态变量中,并反复使用它。


您可以使用IsDefined方法来检查值是否在定义的值之间:

bool defined = Enum.IsDefined(typeof(eOrderType), orderType);
链接地址: http://www.djcxy.com/p/22519.html

上一篇: The correct way of casting an int to an enum

下一篇: how to map enum with database id