public void ReflectionWriteClass(XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContext context, ClassDataContract classContract, XmlDictionaryString[] memberNames) { InvokeOnSerializing(obj, context, classContract); obj = ResolveAdapterType(obj, classContract); if (classContract.IsISerializable) { context.WriteISerializable(xmlWriter, (ISerializable)obj); } else { ReflectionWriteMembers(xmlWriter, obj, context, classContract, classContract, 0 /*childElementIndex*/, memberNames); } InvokeOnSerialized(obj, context, classContract); }
void WriteClass(ClassDataContract classContract) { InvokeOnSerializing(classContract, objLocal, ctx); if (classContract.IsISerializable) { ctx.WriteISerializable(writer, (ISerializable)objLocal); } else { if (classContract.ContractNamespaces.Length > 1) { contractNamespaces = classDataContract.ContractNamespaces; } memberNames = classDataContract.MemberNames; for (int i = 0; i < classContract.ChildElementNamespaces.Length; i++) { if (classContract.ChildElementNamespaces[i] != null) { childElementNamespaces = classDataContract.ChildElementNamespaces; } } if (classContract.HasExtensionData) { ExtensionDataObject extensionData = ((IExtensibleDataObject)objLocal).ExtensionData; ctx.WriteExtensionData(writer, extensionData, -1); WriteMembers(classContract, extensionData, classContract); } else { WriteMembers(classContract, null, classContract); } } InvokeOnSerialized(classContract, objLocal, ctx); }