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

标签 c# .net reflection properties enums

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/

相关文章:

c# - 显示多个项目的 Windows 上下文菜单

c# - ElasticSearch更新到子文档而不更新父文档

Java 反射没有按预期工作

Java 反射 - 如何调用 getter/setter 方法?

java - 使用反射来分配 float

c# - 删除 ProgramData 内文件夹的用户组权限

c# - 在 Aspx.cs 中调用函数并更改下拉框

jquery - 在内联添加时显示 jqg1 而不是从数据库返回的 id

c# - 当 c# .net using block 失败时会发生什么?

c# - 检测SQL Server 2008 R2