internal void InvokeWriter(XmlMapping mapping, XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id) { XmlSerializationWriter writer = null; try { encodingStyle = ValidateEncodingStyle(encodingStyle, mapping.Key); writer = Contract.Writer; writer.Init(xmlWriter, namespaces, encodingStyle, id, this); if (methods[mapping.Key].writeMethod == null) { if (writerMethods == null) { writerMethods = Contract.WriteMethods; } string methodName = (string)writerMethods[mapping.Key]; if (methodName == null) { throw new InvalidOperationException(Res.GetString(Res.XmlNotSerializable, mapping.Accessor.Name)); } methods[mapping.Key].writeMethod = GetMethodFromType(writer.GetType(), methodName, pregeneratedAssmbly ? assembly : null); } methods[mapping.Key].writeMethod.Invoke(writer, new object[] { o }); } catch (SecurityException e) { throw new InvalidOperationException(Res.GetString(Res.XmlNoPartialTrust), e); } finally { if (writer != null) { writer.Dispose(); } } }
/// <include file='doc\XmlSerializer.uex' path='docs/doc[@for="XmlSerializer.Serialize6"]/*' /> // SOAP12: made this internal internal void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle) { try { if (tempAssembly == null) { XmlSerializationWriter writer = CreateWriter(); writer.Init(xmlWriter, (namespaces == null || namespaces.Count == 0 ? defaultNamespaces : namespaces).NamespaceList, encodingStyle, null); try { Serialize(o, writer); } finally { writer.Dispose(); } } else { tempAssembly.InvokeWriter(methodIndex, xmlWriter, o, (namespaces == null || namespaces.Count == 0 ? defaultNamespaces : namespaces).NamespaceList, encodingStyle); } } catch (Exception e) { if (e is TargetInvocationException) { e = e.InnerException; } throw new InvalidOperationException(Res.GetString(Res.XmlGenError), e); } xmlWriter.Flush(); }
/// <include file='doc\XmlSerializer.uex' path='docs/doc[@for="XmlSerializer.Serialize6"]/*' /> public void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id) { try { if (_primitiveType != null) { if (encodingStyle != null && encodingStyle.Length > 0) { throw new InvalidOperationException(SR.Format(SR.XmlInvalidEncodingNotEncoded1, encodingStyle)); } SerializePrimitive(xmlWriter, o, namespaces); } #if !NET_NATIVE else if (_tempAssembly == null || _typedSerializer) { XmlSerializationWriter writer = CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id, _tempAssembly); try { Serialize(o, writer); } finally { writer.Dispose(); } } else { _tempAssembly.InvokeWriter(_mapping, xmlWriter, o, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); } #else else { if (this.innerSerializer == null) { throw new InvalidOperationException(SR.Format(SR.Xml_MissingSerializationCodeException, this.rootType, typeof(XmlSerializer).Name)); } if (!string.IsNullOrEmpty(this.DefaultNamespace)) { this.innerSerializer.DefaultNamespace = this.DefaultNamespace; } XmlSerializationWriter writer = this.innerSerializer.CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); try { this.innerSerializer.Serialize(o, writer); } finally { writer.Dispose(); } } #endif }
public void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id) { try { if (this.primitiveType != null) { if ((encodingStyle != null) && (encodingStyle.Length > 0)) { throw new InvalidOperationException(Res.GetString("XmlInvalidEncodingNotEncoded1", new object[] { encodingStyle })); } this.SerializePrimitive(xmlWriter, o, namespaces); } else { if ((this.tempAssembly == null) || this.typedSerializer) { XmlSerializationWriter writer = this.CreateWriter(); writer.Init(xmlWriter, ((namespaces == null) || (namespaces.Count == 0)) ? DefaultNamespaces : namespaces, encodingStyle, id, this.tempAssembly); try { this.Serialize(o, writer); goto Label_00F7; } finally { writer.Dispose(); } } this.tempAssembly.InvokeWriter(this.mapping, xmlWriter, o, ((namespaces == null) || (namespaces.Count == 0)) ? DefaultNamespaces : namespaces, encodingStyle, id); } } catch (Exception innerException) { if (((innerException is ThreadAbortException) || (innerException is StackOverflowException)) || (innerException is OutOfMemoryException)) { throw; } if (innerException is TargetInvocationException) { innerException = innerException.InnerException; } throw new InvalidOperationException(Res.GetString("XmlGenError"), innerException); } Label_00F7: xmlWriter.Flush(); }
public void Serialize(XmlWriter xmlWriter, object?o, XmlSerializerNamespaces?namespaces, string?encodingStyle, string?id) { try { if (_primitiveType != null) { if (encodingStyle != null && encodingStyle.Length > 0) { throw new InvalidOperationException(SR.Format(SR.XmlInvalidEncodingNotEncoded1, encodingStyle)); } SerializePrimitive(xmlWriter, o, namespaces); } else if (ShouldUseReflectionBasedSerialization(_mapping) || _isReflectionBasedSerializer) { SerializeUsingReflection(xmlWriter, o, namespaces, encodingStyle, id); } else if (_tempAssembly == null || _typedSerializer) { // The contion for the block is never true, thus the block is never hit. XmlSerializationWriter writer = CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id, _tempAssembly); try { Serialize(o, writer); } finally { writer.Dispose(); } } else { _tempAssembly.InvokeWriter(_mapping, xmlWriter, o, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); } } catch (Exception?e) { if (e is TargetInvocationException) { e = e.InnerException; } throw new InvalidOperationException(SR.XmlGenError, e); } xmlWriter.Flush(); }
/// <include file='doc\XmlSerializer.uex' path='docs/doc[@for="XmlSerializer.Serialize6"]/*' /> internal void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id) { #if FEATURE_LEGACYNETCF if (_legacyNetCFSerializer != null) { _legacyNetCFSerializer.Serialize(xmlWriter, o, namespaces, encodingStyle); return; } #endif try { if (_primitiveType != null) { SerializePrimitive(xmlWriter, o, namespaces); } else if (_tempAssembly == null || _typedSerializer) { XmlSerializationWriter writer = CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id, _tempAssembly); try { Serialize(o, writer); } finally { writer.Dispose(); } } else { _tempAssembly.InvokeWriter(_mapping, xmlWriter, o, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); } } catch (Exception e) { if (e is TargetInvocationException) { e = e.InnerException; } throw new InvalidOperationException(SR.XmlGenError, e); } xmlWriter.Flush(); }
/// <include file='doc\XmlSerializer.uex' path='docs/doc[@for="XmlSerializer.Serialize6"]/*' /> public void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id) { try { if (primitiveType != null) { if (encodingStyle != null && encodingStyle.Length > 0) { throw new InvalidOperationException(Res.GetString(Res.XmlInvalidEncodingNotEncoded1, encodingStyle)); } SerializePrimitive(xmlWriter, o, namespaces); } else if (tempAssembly == null || typedSerializer) { XmlSerializationWriter writer = CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id, tempAssembly); try { Serialize(o, writer); } finally { writer.Dispose(); } } else { tempAssembly.InvokeWriter(mapping, xmlWriter, o, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); } } catch (Exception e) { if (e is ThreadAbortException || e is StackOverflowException || e is OutOfMemoryException) { throw; } if (e is TargetInvocationException) { e = e.InnerException; } throw new InvalidOperationException(Res.GetString(Res.XmlGenError), e); } catch { throw new InvalidOperationException(Res.GetString(Res.XmlGenError), null); } xmlWriter.Flush(); }
internal void InvokeWriter(int methodIndex, XmlWriter xmlWriter, object o, ArrayList namespaces, string encodingStyle) { XmlSerializationWriter writer = null; try { encodingStyle = ValidateEncodingStyle(encodingStyle, methodIndex); writer = (XmlSerializationWriter)Activator.CreateInstance(writerType); writer.Init(xmlWriter, namespaces, encodingStyle, this); methods[methodIndex].writeMethod.Invoke(writer, new object[] { o }); } catch (SecurityException e) { throw new InvalidOperationException(Res.GetString(Res.XmlNoPartialTrust), e); } finally { if (writer != null) { writer.Dispose(); } } }
/// <include file='doc\XmlSerializer.uex' path='docs/doc[@for="XmlSerializer.Serialize6"]/*' /> public void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id) { try { if (_primitiveType != null) { if (encodingStyle != null && encodingStyle.Length > 0) { throw new InvalidOperationException(SR.Format(SR.XmlInvalidEncodingNotEncoded1, encodingStyle)); } SerializePrimitive(xmlWriter, o, namespaces); } #if !NET_NATIVE else if (Mode == SerializationMode.ReflectionOnly) { XmlMapping mapping; if (_mapping != null && _mapping.GenerateSerializer) { mapping = _mapping; } else { XmlReflectionImporter importer = new XmlReflectionImporter(DefaultNamespace); mapping = importer.ImportTypeMapping(rootType, null, DefaultNamespace); } var writer = new ReflectionXmlSerializationWriter(mapping, xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); writer.WriteObject(o); } else if (_tempAssembly == null || _typedSerializer) { // The contion for the block is never true, thus the block is never hit. XmlSerializationWriter writer = CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id, _tempAssembly); try { Serialize(o, writer); } finally { writer.Dispose(); } } else { _tempAssembly.InvokeWriter(_mapping, xmlWriter, o, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); } #else else { if (this.innerSerializer != null) { if (!string.IsNullOrEmpty(this.DefaultNamespace)) { this.innerSerializer.DefaultNamespace = this.DefaultNamespace; } XmlSerializationWriter writer = this.innerSerializer.CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); try { this.innerSerializer.Serialize(o, writer); } finally { writer.Dispose(); } } else if (ReflectionMethodEnabled) { XmlMapping mapping; if (_mapping != null && _mapping.GenerateSerializer) { mapping = _mapping; } else { XmlReflectionImporter importer = new XmlReflectionImporter(DefaultNamespace); mapping = importer.ImportTypeMapping(rootType, null, DefaultNamespace); } var writer = new ReflectionXmlSerializationWriter(mapping, xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); writer.WriteObject(o); } else { throw new InvalidOperationException(SR.Format(SR.Xml_MissingSerializationCodeException, this.rootType, typeof(XmlSerializer).Name)); } } #endif }
public void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id) { try { if (_primitiveType != null) { if (encodingStyle != null && encodingStyle.Length > 0) { throw new InvalidOperationException(SR.Format(SR.XmlInvalidEncodingNotEncoded1, encodingStyle)); } SerializePrimitive(xmlWriter, o, namespaces); } else if (ShouldUseReflectionBasedSerialization(_mapping) || _isReflectionBasedSerializer) { SerializeUsingReflection(xmlWriter, o, namespaces, encodingStyle, id); } #if !FEATURE_SERIALIZATION_UAPAOT else if (_tempAssembly == null || _typedSerializer) { // The contion for the block is never true, thus the block is never hit. XmlSerializationWriter writer = CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id, _tempAssembly); try { Serialize(o, writer); } finally { writer.Dispose(); } } else { _tempAssembly.InvokeWriter(_mapping, xmlWriter, o, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); } #else else { if (this.innerSerializer != null) { if (!string.IsNullOrEmpty(this.DefaultNamespace)) { this.innerSerializer.DefaultNamespace = this.DefaultNamespace; } XmlSerializationWriter writer = this.innerSerializer.CreateWriter(); writer.Init(xmlWriter, namespaces == null || namespaces.Count == 0 ? DefaultNamespaces : namespaces, encodingStyle, id); try { this.innerSerializer.Serialize(o, writer); } finally { writer.Dispose(); } } else if (ReflectionMethodEnabled) { SerializeUsingReflection(xmlWriter, o, namespaces, encodingStyle, id); } else { throw new InvalidOperationException(SR.Format(SR.Xml_MissingSerializationCodeException, this._rootType, typeof(XmlSerializer).Name)); } } #endif }