我有一个审核类,可以通过反射(reflection)来恢复所有内容。实际上,我需要知道某个特定属性是否为枚举,但是我得到了一个奇怪的行为:
在foreach迭代期间,q.PropertyType.IsEnum
返回false。使用Quick watcher时,该属性实际上是假的,而IsClass也是如此。所以这基本上什么都不是:)
研究更多有关该问题的信息后,我发现Nullable Enum在IsEnum
中返回false。如何忽略此可为空的值,并验证该属性是否为枚举?
最佳答案
当您的属性为可空类型时,IsEnum将返回false
。在这种情况下,在q.PropertyType
上调用Nullable.GetUnderlyingType将返回您想要的类型。然后,您可以使用IsEnum进行检查。