我有一个审核类,可以通过反射(reflection)来恢复所有内容。实际上,我需要知道某个特定属性是否为枚举,但是我得到了一个奇怪的行为:

在foreach迭代期间,q.PropertyType.IsEnum返回false。使用Quick watcher时,该属性实际上是假的,而IsClass也是如此。所以这基本上什么都不是:)

研究更多有关该问题的信息后,我发现Nullable Enum在IsEnum中返回false。如何忽略此可为空的值,并验证该属性是否为枚举?

最佳答案

当您的属性为可空类型时,IsEnum将返回false。在这种情况下,在q.PropertyType上调用Nullable.GetUnderlyingType将返回您想要的类型。然后,您可以使用IsEnum进行检查。

10-06 09:06