有没有办法检查类型是一种类型的枚举?

时间:2011-01-20 18:58:00

标签: c# enumeration typechecking

有人给我一个类型t。

我想知道该类型是否是枚举。

public bool IsEnumeration(Type t)
{
    // Mystery Code.
    throw new NotImplementedException();
}

public void IsEnumerationChecker()
{
    Assert.IsTrue(IsEnumeration(typeof(Color)));
    Assert.IsFalse(IsEnumeration(typeof(float)));
}

2 个答案:

答案 0 :(得分:10)

您还可以使用Type上的媒体资源IsEnum进行检查:

Type t = typeof(DayOfWeek);
bool isEnum = t.IsEnum;

答案 1 :(得分:3)

您可以通过多种方式实现这一目标:

return typeof(Enum).IsAssignableFrom(t) && t != typeof(Enum);

return typeof(Enum).IsAssignableFrom(t) && t.IsValueType;

或(现在我在检查IsValueType时看到了it exists

return t.IsEnum;

显然后者是最好的方法,但前两个会给你提示如何处理类似情况。

相关问题