在设计时未知的对象上,我循环其属性以执行某些处理。对于每个属性,我必须检查其值是否与默认值不同。
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的枚举项?