[英]How to get the list of Enum 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等)。 我可以轻松地测试一下这些类型的属性,但这会导致我在搜索Enums时出现很多误报。
你快到了 只需使用
if (property.PropertyType.IsEnum)
// Celebrate
在.NET 4.5中,您可能需要从属性类型获取TypeInfo对象。
property
是一个PropertyInfo
对象。
PropertyInfo
不继承Enum
,所以永远不可能是true。
您要检查PropertyType
–描述属性返回类型的Type
对象。
if (property.PropertyType is Enum)
也不起作用,出于相同的原因– Type
不继承Enum
。
相反,您需要查看Type
对象的属性以查看其是否为枚举类型。
在这种情况下,您可以只使用其IsEnum
属性。 在更一般的情况下,您需要调用IsSubclassOf()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.