string GenerateReadObjectElement (XmlTypeMapElementInfo elem)
{
switch (elem.TypeData.SchemaType)
{
case SchemaTypes.XmlNode:
return GetReadXmlNode (elem.TypeData, true);
case SchemaTypes.Primitive:
case SchemaTypes.Enum:
return GenerateReadPrimitiveValue (elem);
case SchemaTypes.Array:
return GenerateReadListElement (elem.MappedType, null, GetLiteral(elem.IsNullable), true);
case SchemaTypes.Class:
return GetReadObjectCall (elem.MappedType, GetLiteral(elem.IsNullable), "true");
case SchemaTypes.XmlSerializable:
return GetCast (elem.TypeData, String.Format ("({0}) ReadSerializable (({0}) Activator.CreateInstance(typeof({0}), true))", elem.TypeData.CSharpFullName));
default:
throw new NotSupportedException ("Invalid value type");
}
}