private bool WriteMemberFixupBegin(Member[] members, string fixupMethodName, string source)
{
int fixupCount = 0;
for (int i = 0; i < members.Length; i++)
{
Member member = (Member)members[i];
if (member.Mapping.Elements.Length == 0)
continue;
TypeMapping mapping = member.Mapping.Elements[0].Mapping;
if (mapping is StructMapping || mapping is ArrayMapping || mapping is PrimitiveMapping || mapping is NullableMapping)
{
member.MultiRef = true;
member.FixupIndex = fixupCount++;
}
}
if (fixupCount > 0)
{
Writer.Write("Fixup fixup = new Fixup(");
Writer.Write(source);
Writer.Write(", ");
Writer.Write("new ");
Writer.Write(typeof(XmlSerializationFixupCallback).FullName);
Writer.Write("(this.");
Writer.Write(fixupMethodName);
Writer.Write("), ");
Writer.Write(fixupCount.ToString(CultureInfo.InvariantCulture));
Writer.WriteLine(");");
Writer.WriteLine("AddFixup(fixup);");
return true;
}
return false;
}