internal virtual void Fixup(ParseRecord record, ParseRecord parent) { Object obj = record.PRnewObj; InternalST.Soap(this, "Fixup ", obj, " ", ((Enum)valueFixupEnum).ToString()); switch (valueFixupEnum) { case ValueFixupEnum.Array: arrayObj.SetValue(obj, indexMap); break; case ValueFixupEnum.Header: Type type = typeof(Header); if (valueInfo == null) { MemberInfo[] valueInfos = type.GetMember("Value"); if (valueInfos.Length != 1) { throw new SerializationException(String.Format(SoapUtil.GetResourceString("Serialization_HeaderReflection"), valueInfos.Length)); } valueInfo = valueInfos[0]; } InternalST.SerializationSetValue((FieldInfo)valueInfo, header, obj); break; case ValueFixupEnum.Member: InternalST.Soap(this, "Fixup Member new object value ", obj, " memberObject ", memberObject); if (objectInfo.isSi) { InternalST.Soap(this, "Recording a fixup on member: ", memberName, " in object id", parent.PRobjectId, " Required Object ", record.PRobjectId); objectInfo.objectManager.RecordDelayedFixup(parent.PRobjectId, memberName, record.PRobjectId); } else { MemberInfo memberInfo = objectInfo.GetMemberInfo(memberName); InternalST.Soap(this, "Recording a fixup on member:", memberInfo, " in object id ", parent.PRobjectId, " Required Object", record.PRobjectId); objectInfo.objectManager.RecordFixup(parent.PRobjectId, memberInfo, record.PRobjectId); } break; } }