与How to get the list of properties of a class?密切相关,我已经了解了这个问题,但我想知道哪些返回的属性是枚举。我的第一个(不太可能)猜测是:
foo A;
foreach (var property in A.GetType().GetProperties())
{
if (property.PropertyType is Enum)
//Celebrate
}
这没有用。这是有效的,但 Visual Studio 甚至能够提前警告“给定的表达式永远不是提供的 ('System.Enum') 类型”。
据我了解,C# 枚举是原始计数类型之上的包装器(默认为 int,但也可能是 byte、short 等)。我可以很容易地测试这些类型的属性,但这会导致我在搜索枚举时出现很多误报。
最佳答案
你快到了。只需使用
if (property.PropertyType.IsEnum)
// Celebrate
在 .NET 4.5 中,您可能需要从属性类型中获取 TypeInfo 对象。
关于c# - 如何获取类的枚举属性列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533998/