void WriteElementMembers (ClassMap map, object ob, bool isValueList)
{
ICollection members = map.ElementMembers;
if (members != null)
{
foreach (XmlTypeMapMemberElement member in members)
{
if (!MemberHasValue (member, ob, isValueList)) continue;
object memberValue = GetMemberValue (member, ob, isValueList);
Type memType = member.GetType();
if (memType == typeof(XmlTypeMapMemberList))
{
WriteMemberElement ((XmlTypeMapElementInfo) member.ElementInfo[0], memberValue);
}
else if (memType == typeof(XmlTypeMapMemberFlatList))
{
if (memberValue != null)
WriteListContent (ob, member.TypeData, ((XmlTypeMapMemberFlatList)member).ListMap, memberValue, null);
}
else if (memType == typeof(XmlTypeMapMemberAnyElement))
{
if (memberValue != null)
WriteAnyElementContent ((XmlTypeMapMemberAnyElement)member, memberValue);
}
else if (memType == typeof(XmlTypeMapMemberAnyAttribute))
{
// Ignore
}
else if (memType == typeof(XmlTypeMapMemberElement))
{
XmlTypeMapElementInfo elem = member.FindElement (ob, memberValue);
WriteMemberElement (elem, memberValue);
}
else
throw new InvalidOperationException ("Unknown member type");
}
}
}