bool MemberHasValue (XmlTypeMapMember member, object ob, bool isValueList)
{
if (isValueList) {
if (member.IsOptionalValueType && !member.GetValueSpecified (ob))
return false;
return member.GlobalIndex < ((object[])ob).Length;
}
else if (member.DefaultValue != System.DBNull.Value) {
object val = GetMemberValue (member, ob, isValueList);
if (val == null && member.DefaultValue == null) return false;
if (val != null && val.GetType().IsEnum)
{
if (val.Equals (member.DefaultValue)) return false;
Type t = Enum.GetUnderlyingType(val.GetType());
val = Convert.ChangeType (val, t);
}
if (val != null && val.Equals (member.DefaultValue)) return false;
}
else if (member.IsOptionalValueType)
return member.GetValueSpecified (ob);
return true;
}