void GenerateReadObject (XmlTypeMapping typeMap)
{
string isNullable;
if (_format == SerializationFormat.Literal) {
WriteLine ("public " + typeMap.TypeData.CSharpFullName + " " + GetReadObjectName (typeMap) + " (bool isNullable, bool checkType)");
isNullable = "isNullable";
}
else {
WriteLine ("public object " + GetReadObjectName (typeMap) + " ()");
isNullable = "true";
}
WriteLineInd ("{");
PushHookContext ();
SetHookVar ("$TYPE", typeMap.TypeData.CSharpName);
SetHookVar ("$FULLTYPE", typeMap.TypeData.CSharpFullName);
SetHookVar ("$NULLABLE", "isNullable");
switch (typeMap.TypeData.SchemaType)
{
case SchemaTypes.Class: GenerateReadClassInstance (typeMap, isNullable, "checkType"); break;
case SchemaTypes.Array:
string list = GenerateReadListElement (typeMap, null, isNullable, true);
if (list != null)
WriteLine ("return " + list + ";");
break;
case SchemaTypes.XmlNode: GenerateReadXmlNodeElement (typeMap, isNullable); break;
case SchemaTypes.Primitive: GenerateReadPrimitiveElement (typeMap, isNullable); break;
case SchemaTypes.Enum: GenerateReadEnumElement (typeMap, isNullable); break;
case SchemaTypes.XmlSerializable: GenerateReadXmlSerializableElement (typeMap, isNullable); break;
default: throw new Exception ("Unsupported map type");
}
WriteLineUni ("}");
WriteLine ("");
PopHookContext ();
}