object ReadObjectElement (XmlTypeMapElementInfo elem)
{
switch (elem.TypeData.SchemaType)
{
case SchemaTypes.XmlNode:
return ReadXmlNode (elem.TypeData, true);
case SchemaTypes.Primitive:
case SchemaTypes.Enum:
return ReadPrimitiveValue (elem);
case SchemaTypes.Array:
return ReadListElement (elem.MappedType, elem.IsNullable, null, true);
case SchemaTypes.Class:
return ReadObject (elem.MappedType, elem.IsNullable, true);
case SchemaTypes.XmlSerializable:
object ob = Activator.CreateInstance (elem.TypeData.Type, true);
return ReadSerializable ((IXmlSerializable)ob);
default:
throw new NotSupportedException ("Invalid value type");
}
}