/// <summary> /// Add each element of the collection (a <see cref="DictionaryEntry"/> to the Xml /// </summary> /// <param name="_name">The name for the element</param> /// <param name="_element">The element from the collection</param> /// <param name="_parentElement">The Xml to receive the element</param> /// <param name="_expectedTypes">The Expected Types for the element's components</param> /// <param name="_serializer">The serializer handling the serialization process.</param> protected override void AddElementToXml(string _name, object _element, XmlElement _parentElement, Type[] _expectedTypes, CSerializer _serializer) { var entryElement = _parentElement.AddElement(_name); var entry = (DictionaryEntry)_element; _serializer.FrameworkSerialize(KEY_ELEMENT_NAME, entry.Key, entryElement, _expectedTypes[0]); _serializer.FrameworkSerialize(VALUE_ELEMENT_NAME, entry.Value, entryElement, _expectedTypes[1]); }
/// <summary> /// Serialize the enumeration, serializing each element /// </summary> /// <param name="_collection">The collection that is to be enumerated</param> /// <param name="_parentNode">The XmlNode to receive the elements</param> /// <param name="_serializer">The framework controlling the serialization</param> private static void SerializeEnumeration(object _collection, XmlElement _parentNode, CSerializer _serializer) { var elementName = _serializer.GetNameForCollectionElement(); var e = GetEnumerator(_collection); while (e.MoveNext()) { var element = e.Current; _serializer.FrameworkSerialize(elementName, element, _parentNode, typeof(TElementType)); } }
/// <summary> /// Use the data found in the recursion state (this object) to serialize a single /// element in the array to Xml. /// </summary> private void AddArrayElementToXml() { var obj = m_array.GetValue(m_indicies); // the m_indicies array happens to be in the format needed for Array.GetValue if (SimpleElementSerialization) { if (m_arrayType.IsPrimitive) { m_simpleElements.Append(obj.ToString()); } else // its a string { var preEscaped = obj as string; var escaped = CFramework.ProtectStringForStringlist(preEscaped); m_simpleElements.Append(escaped); } m_simpleElements.Append(","); } else if (obj == null && m_serializer.Context.RemoveNullValuesFromXml) { m_skippedNull = true; } else { var elem = m_serializer.FrameworkSerialize(m_elementName, obj, m_xmlToAddTo, m_arrayType); if (m_serializer.Context.ArrayElementsIncludeIndicies || m_skippedNull) { elem.AddAttribute(m_serializer.Context.ArrayIndexAttributeName, Lib.ConvertArrayToString(m_indicies)); } m_skippedNull = false; } }
/// <summary> /// Add, using either default logic (this method) or subclass logic (overridden in that subclass), add an element /// to the parent Xml. /// </summary> /// <param name="_name"></param> /// <param name="_element"></param> /// <param name="_parentElement"></param> /// <param name="_expectedTypes"></param> /// <param name="_serializer"></param> protected virtual void AddElementToXml(string _name, object _element, XmlElement _parentElement, Type[] _expectedTypes, CSerializer _serializer) => _serializer.FrameworkSerialize(_name, _element, _parentElement, _expectedTypes[0]);