System.Xml.Serialization.SerializationCodeGenerator.GenerateFixupCallbacks C# (CSharp) Method

GenerateFixupCallbacks() private method

private GenerateFixupCallbacks ( ) : void
return void
		void GenerateFixupCallbacks ()
		{
			foreach (XmlMapping map in _fixupCallbacks)
			{
				bool isList = map is XmlMembersMapping;
				string tname = !isList ? ((XmlTypeMapping)map).TypeData.CSharpFullName : "object[]";
				WriteLine ("void " + GetFixupCallbackName (map) + " (object obfixup)");
				WriteLineInd ("{");					
				WriteLine ("Fixup fixup = (Fixup)obfixup;");
				WriteLine (tname + " source = (" + tname + ") fixup.Source;");
				WriteLine ("string[] ids = fixup.Ids;");
				WriteLine ("");

				ClassMap cmap = (ClassMap)map.ObjectMap;
				ICollection members = cmap.ElementMembers;
				if (members != null) {
					foreach (XmlTypeMapMember member in members)
					{
						WriteLineInd ("if (ids[" + member.Index + "] != null)");
						string val = "GetTarget(ids[" + member.Index + "])";
						if (!isList) val = GetCast (member.TypeData, val);
						GenerateSetMemberValue (member, "source", val, isList);
						Unindent ();
					}
				}
				WriteLineUni ("}");
				WriteLine ("");
			}
		}
SerializationCodeGenerator