internal void WriteSerializationInfo(XmlWriterDelegator xmlWriter, Type objType, SerializationInfo serInfo) { if (DataContract.GetClrTypeFullName(objType) != serInfo.FullTypeName) { if (base.DataContractResolver != null) { XmlDictionaryString str; XmlDictionaryString str2; if (this.ResolveType(serInfo.ObjectType, objType, out str, out str2)) { xmlWriter.WriteAttributeQualifiedName("z", DictionaryGlobals.ISerializableFactoryTypeLocalName, DictionaryGlobals.SerializationNamespace, str, str2); } } else { string str3; string str4; DataContract.GetDefaultStableName(serInfo.FullTypeName, out str3, out str4); xmlWriter.WriteAttributeQualifiedName("z", DictionaryGlobals.ISerializableFactoryTypeLocalName, DictionaryGlobals.SerializationNamespace, DataContract.GetClrTypeString(str3), DataContract.GetClrTypeString(str4)); } } this.WriteClrTypeInfo(xmlWriter, objType, serInfo); base.IncrementItemCount(serInfo.MemberCount); SerializationInfoEnumerator enumerator = serInfo.GetEnumerator(); while (enumerator.MoveNext()) { SerializationEntry current = enumerator.Current; XmlDictionaryString clrTypeString = DataContract.GetClrTypeString(DataContract.EncodeLocalName(current.Name)); xmlWriter.WriteStartElement(clrTypeString, DictionaryGlobals.EmptyString); object obj2 = current.Value; if (obj2 == null) { this.WriteNull(xmlWriter); } else { this.InternalSerializeReference(xmlWriter, obj2, false, false, -1, Globals.TypeOfObject.TypeHandle); } xmlWriter.WriteEndElement(); } }