2011-01-20 174 views
4

有人给我一个类型t。有什么办法可以检查一个类型是枚举类型吗?

我想知道如果这种类型是枚举或不。

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

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

回答

10

您也可以通过Type使用属性IsEnum检查:

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

有您能做到这一点不同的方式:

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

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

或(现在,我已经看到了it exists同时检查IsValueType

return t.IsEnum; 

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

+0

谢谢,我会记住它。 – user420667 2011-01-20 19:10:24

+0

@Downvoter:关心评论? – 2011-01-20 19:16:48