コード例 #1
0
        /// <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]);
        }
コード例 #2
0
        /// <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));
            }
        }
コード例 #3
0
        /// <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;
            }
        }
コード例 #4
0
 /// <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]);