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();
}
}