public static void SerializeObject( this IXmlSerializerInternal serializer, Stream stream, object instance, Encoding encoding, Formatting formatting, ISerializeOptions options) { options = options.WithNewSerializationState(); StreamWriter streamWriter = null; try { streamWriter = new StreamWriter(stream, encoding ?? Encoding.UTF8); var xmlWriter = new XSerializerXmlTextWriter(streamWriter, options) { Formatting = formatting }; serializer.SerializeObject(xmlWriter, instance, options); xmlWriter.Flush(); } finally { if (streamWriter != null) { streamWriter.Flush(); } } }
public void WriteValue(XSerializerXmlTextWriter writer, object instance, ISerializeOptions options) { if (_shouldSerializeFunc(instance)) { var value = _getValueFunc(instance); _serializer.Value.SerializeObject(writer, value, options); } }
/// <summary> /// Maybe sets the <see cref="XSerializerXmlTextWriter.IsEncryptionEnabled"/> property of /// <paramref name="writer"/> to true. Returns true if the value was changed to true, false /// if it was not changed to true. /// </summary> internal static bool MaybeSetIsEncryptionEnabledToTrue(this XSerializerXmlTextWriter writer, EncryptAttribute encryptAttribute, ISerializeOptions options) { if (options.ShouldEncrypt && encryptAttribute != null && !writer.IsEncryptionEnabled) { writer.IsEncryptionEnabled = true; return(true); } return(false); }
private void SerializeExpandoObject(XSerializerXmlTextWriter writer, IDictionary <string, object> expando, ISerializeOptions options) { if (expando == null && !options.ShouldEmitNil) { return; } writer.WriteStartDocument(); writer.WriteStartElement(_options.RootElementName); writer.WriteDefaultDocumentNamespaces(); using (writer.WriteDefaultNamespace(_options.DefaultNamespace)) { if (expando == null) { writer.WriteNilAttribute(); writer.WriteEndElement(); return; } var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); foreach (var property in expando) { if (property.Value == null) { continue; } IXmlSerializerInternal serializer; if (property.Value is ExpandoObject) { serializer = DynamicSerializer.GetSerializer <ExpandoObject>(null, _options.WithRootElementName(property.Key)); } else { serializer = CustomSerializer.GetSerializer(property.Value.GetType(), null, _options.WithRootElementName(property.Key)); } serializer.SerializeObject(writer, property.Value, options); } if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } writer.WriteEndElement(); } }
public void SerializeObject(XSerializerXmlTextWriter writer, object value, ISerializeOptions options) { if (value != null) { var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); writer.WriteValue(_valueConverter.GetString(value, options)); if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } } }
public void SerializeObject(XSerializerXmlTextWriter writer, object value, ISerializeOptions options) { if (value != null) { var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); writer.WriteValue(_valueConverter.GetString(value, options)); if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } } }
public void SerializeObject(XSerializerXmlTextWriter writer, object value, ISerializeOptions options) { var wasEmptyWriter = writer.IsEmpty; writer.WriteStartDocument(); if (value != null) { WriteElement(writer, w => w.WriteValue(_valueConverter.GetString(value, options)), options); } else if (_alwaysEmitNil || options.ShouldEmitNil || wasEmptyWriter) { WriteElement(writer, w => w.WriteNilAttribute(), options); } }
private void WriteElement(XSerializerXmlTextWriter writer, Action <XSerializerXmlTextWriter> writeValueAction, ISerializeOptions options) { writer.WriteStartElement(_elementName); writer.WriteDefaultDocumentNamespaces(); var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); writeValueAction(writer); if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } writer.WriteEndElement(); }
public void SerializeObject(XSerializerXmlTextWriter writer, object instance, ISerializeOptions options) { if (instance == null && !options.ShouldEmitNil) { return; } writer.WriteStartDocument(); writer.WriteStartElement(_options.RootElementName); writer.WriteDefaultDocumentNamespaces(); using (writer.WriteDefaultNamespace(_options.DefaultNamespace)) { if (instance == null) { writer.WriteNilAttribute(); writer.WriteEndElement(); return; } var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); foreach (var item in GetDictionaryEntries(instance)) { writer.WriteStartElement("Item"); if (item.Key != null) { _keySerializer.SerializeObject(writer, item.Key, options); } if (item.Value != null) { _valueSerializer.SerializeObject(writer, item.Value, options); } writer.WriteEndElement(); } if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } writer.WriteEndElement(); } }
public void SerializeObject(XSerializerXmlTextWriter writer, object instance, ISerializeOptions options) { if (instance == null && !options.ShouldEmitNil) { return; } writer.WriteStartDocument(); writer.WriteStartElement(_options.RootElementName); writer.WriteDefaultDocumentNamespaces(); using (writer.WriteDefaultNamespace(_options.DefaultNamespace)) { if (instance == null) { writer.WriteNilAttribute(); writer.WriteEndElement(); return; } var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); foreach (var item in GetDictionaryEntries(instance)) { writer.WriteStartElement("Item"); if (item.Key != null) { _keySerializer.SerializeObject(writer, item.Key, options); } if (item.Value != null) { _valueSerializer.SerializeObject(writer, item.Value, options); } writer.WriteEndElement(); } if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } writer.WriteEndElement(); } }
public static void SerializeObject( this IXmlSerializerInternal serializer, TextWriter writer, object instance, Formatting formatting, ISerializeOptions options) { options = options.WithNewSerializationState(); var xmlWriter = new XSerializerXmlTextWriter(writer, options) { Formatting = formatting }; serializer.SerializeObject(xmlWriter, instance, options); xmlWriter.Flush(); }
public void SerializeObject(XSerializerXmlTextWriter writer, object value, ISerializeOptions options) { if (value != null) { writer.WriteStartAttribute(_attributeName); // TODO: include namespaces var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); writer.WriteString(_valueConverter.GetString(value, options)); if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } writer.WriteEndAttribute(); } }
public void SerializeObject(XSerializerXmlTextWriter writer, object value, ISerializeOptions options) { if (value != null) { writer.WriteStartAttribute(_attributeName); // TODO: include namespaces var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); writer.WriteString(_valueConverter.GetString(value, options)); if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } writer.WriteEndAttribute(); } }
public static string SerializeObject( this IXmlSerializerInternal serializer, object instance, Encoding encoding, Formatting formatting, ISerializeOptions options) { options = options.WithNewSerializationState(); var sb = new StringBuilder(); using (var stringWriter = new StringWriterWithEncoding(sb, encoding ?? Encoding.UTF8)) { using (var xmlWriter = new XSerializerXmlTextWriter(stringWriter, options)) { xmlWriter.Formatting = formatting; serializer.SerializeObject(xmlWriter, instance, options); } } return(sb.ToString()); }
public void SerializeObject(XSerializerXmlTextWriter writer, object instance, ISerializeOptions options) { if (instance == null && !options.ShouldEmitNil) { return; } if (_options.RootElementName != null) { writer.WriteStartDocument(); writer.WriteStartElement(_options.RootElementName); writer.WriteDefaultDocumentNamespaces(); writer.WriteDefaultNamespace(_options.DefaultNamespace).Dispose(); } if (instance == null) { writer.WriteNilAttribute(); } else { var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); foreach (var item in (IEnumerable)instance) { _itemSerializer.SerializeObject(writer, item, options); } if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } } if (_options.RootElementName != null) { writer.WriteEndElement(); } }
public void SerializeObject(XSerializerXmlTextWriter writer, object instance, ISerializeOptions options) { var expando = instance as ExpandoObject; if (expando != null || instance == null) { SerializeExpandoObject(writer, expando, options); return; } IXmlSerializerInternal serializer; if (!options.ShouldAlwaysEmitTypes || instance.IsAnonymous()) { serializer = CustomSerializer.GetSerializer(instance.GetType(), _encryptAttribute, _options); } else { serializer = CustomSerializer.GetSerializer(typeof(object), _encryptAttribute, _options.WithAdditionalExtraTypes(instance.GetType())); } serializer.SerializeObject(writer, instance, options); }
public void SerializeObject(XSerializerXmlTextWriter writer, object instance, ISerializeOptions options) { _serializer.SerializeExpandoObject(writer, (ExpandoObject)instance, options); }
public void SerializeObject(XSerializerXmlTextWriter writer, object instance, ISerializeOptions options) { if (instance == null && !options.ShouldEmitNil) { return; } if (_options.RootElementName != null) { writer.WriteStartDocument(); writer.WriteStartElement(_options.RootElementName); writer.WriteDefaultDocumentNamespaces(); writer.WriteDefaultNamespace(_options.DefaultNamespace).Dispose(); } if (instance == null) { writer.WriteNilAttribute(); } else { var setIsEncryptionEnabledBackToFalse = writer.MaybeSetIsEncryptionEnabledToTrue(_encryptAttribute, options); foreach (var item in (IEnumerable)instance) { _itemSerializer.SerializeObject(writer, item, options); } if (setIsEncryptionEnabledBackToFalse) { writer.IsEncryptionEnabled = false; } } if (_options.RootElementName != null) { writer.WriteEndElement(); } }