protected override void InitializeElementProperties(System.Xml.XmlReader reader, ref object obj, ITypeSerializationInfo info, XmlSerializationContext context)
{
int currentDepth = reader.Depth;
while (reader.Depth < currentDepth || reader.Read())
{
if (reader.Depth == currentDepth)
{
break;
}
else if (reader.Depth < currentDepth)
{
return;
}
if (reader.NodeType == XmlNodeType.Element)
{
var found = false;
foreach (IPropertySerializationInfo p in info.ElementProperties)
{
if (IsPropertyElement(reader, p))
{
ReadElementFromProperty(reader, obj, context, p);
found = true;
break;
}
}
if (!found)
{
foreach (IPropertySerializationInfo p in info.AttributeProperties)
{
if (IsPropertyElement(reader, p))
{
ReadElementFromProperty(reader, obj, context, p);
found = true;
break;
}
}
if (!found)
{
OnUnknownElement(new UnknownElementEventArgs(obj, reader.ReadOuterXml()));
}
}
}
}
}