【发布时间】:2014-02-24 06:41:52
【问题描述】:
我有一个对象。通常是long 或string,所以为了简化代码让我们假设一下。
我必须创建一个方法来尝试将此对象转换为提供的枚举。所以:
public object ToEnum(Type enumType, object value)
{
if(enumType.IsEnum)
{
if(Enum.IsDefined(enumType, value))
{
var val = Enum.Parse(enumType, (string)value);
return val;
}
}
return null;
}
使用字符串效果很好。使用数字会导致问题,因为枚举的默认基础类型是int,而不是long,而IsDefined 会抛出ArgumentException。
当然,我可以进行许多检查、转换或尝试捕获。
我想要的是为此编写一个干净且小巧的代码。 任何想法如何使它可读和简单?
【问题讨论】:
-
好吧,我必须动态地做(我不知道编译时枚举的类型)。另外,正如我所说,
IsDefined是不行的,因为它对我来说有点太严格了。 -
解释-1票是个好习惯。如果问题有问题,请告诉我;-)
标签: c# enums type-conversion