如何获取类的枚举属性列表?

Nil*_*oCK 1 .net c# reflection enums properties

如何获取类的属性列表密切相关,我已经得到了这个问题,但我有兴趣知道哪些返回的属性是枚举.我的第一个(不太可能的)猜测是:

foo A;

foreach (var property in A.GetType().GetProperties())
{
    if (property.PropertyType is Enum)
        //Celebrate
}
Run Code Online (Sandbox Code Playgroud)

这没用.它是有效的,但Visual Studio甚至能够提前警告"给定的表达式永远不会提供('System.Enum')类型".

据我所知,C#Enums是原始计数类型之上的包装器(默认为int,但也可能是byte,short等).我可以轻松地测试以查看这些类型的属性,但这会导致我在搜索Enums时出现很多误报.

Geo*_*org 5

你快到了.只是用

if (property.PropertyType.IsEnum)
    // Celebrate
Run Code Online (Sandbox Code Playgroud)

在.NET 4.5中,您可能需要从属性类型中获取TypeInfo对象.