【发布时间】:2018-05-30 12:07:11
【问题描述】:
给定一个对象(在设计时未知),我循环它的属性来执行一些过程。在每个属性上,我必须检查它的值是否与默认值不同。
foreach(var p in propertyInfos)
{
if (something) { ... }
else if (p.PropertyType.IsEnum)
{
object oDefault = GetDefaultValueOfThisPropertyByWhateverMethod();
if (oDefault == null)
oDefault = default(p.PropertyType); // not valid
var vValue = p.GetValue(myObject);
if (!oDefault.Equals(vValue))
// Do something enum specific when value is not the default one.
}
}
如果知道可能存在不包含值为 0 的项目的枚举,我怎么能做到这一点?
【问题讨论】:
-
任何
enum的默认值都是零,enum是否包含具有该值的项目并不重要。 -
@DavidG 但请注意,它是“键入”的零......
-
@pijemcolu 但这是无效代码
标签: c# reflection enums default