Exemple #1
0
        public void Write(object instance, INodeWriter parentNode, Type referencedAsType)
        {
            var valueID  = valuesCache.Add(instance);
            var typeName = typeNamesCache.GetTypeName(instance.GetType());

            using (var arrayNode = ownerDocument.CreateTypedElement("arrayOfDoubles",
                                                                    typeName, parentNode))
            {
                arrayNode.AddAttribute("ID", valueID.ToString());

                using (var itemsNode = ownerDocument.CreateElement("items", arrayNode))
                {
                    var values = (Array)instance;
                    itemsNode.AddAttribute("count", values.Length);

                    var innerText         = new StringBuilder();
                    var itemsPerLineCount = 0;
                    foreach (var listItem in values)
                    {
                        innerText.AppendFormat("{0},", listItem);
                        if (++itemsPerLineCount == 10)
                        {
                            itemsPerLineCount = 0;
                            innerText.AppendFormat("\r\n");
                        }
                    }

                    itemsNode.InnerText = innerText.ToString();
                }
            }
        }
 public void Write(object instance, INodeWriter parentNode, Type referencedAsType)
 {
     using (var valueNode = ownerDocument.CreateElement(nodeName, parentNode))
     {
         valueNode.AddAttribute("value", instance.ToString());
     }
 }
Exemple #3
0
 public void Write(object instance, INodeWriter parentNode, Type referencedAsType)
 {
     using (var valueNode = ownerDocument.CreateElement("primitive", parentNode))
     {
         valueNode.AddAttribute("type", instance.GetType().FullName);
         valueNode.InnerText = instance.ToString();
     }
 }
Exemple #4
0
        public void Write(object instance, INodeWriter parentNode, Type referencedAsType)
        {
            var typeName = (MetaDataTypeName)instance;

            using (var node = ownerDocument.CreateElement("typename", parentNode))
            {
                node.AddAttribute("typeid", typeName.Id);
                node.AddAttribute("name", typeName.Name);
            }
        }
        private void WriteItems(ISerialiserNode dictNode, IDictionary items)
        {
            using (var itemsNode = ownerDocument.CreateElement("items", dictNode))
            {
                itemsNode.AddAttribute("count", items.Count);

                foreach (DictionaryEntry item in items)
                {
                    objectWriter.Write(item.Key, itemsNode, item.Key.GetType());
                    objectWriter.Write(item.Value, itemsNode, item.Value.GetType());
                }
            }
        }
Exemple #6
0
        public void Write(object owningObject, ISerialiserNode parentNode, MemberInfo memberInfo)
        {
            var fieldInfo = memberInfo as FieldInfo;

            if (fieldInfo != null)
            {
                var fieldValue = fieldInfo.GetValue(owningObject);

                using (var node = ownerDocument.CreateElement("f", parentNode))
                {
                    node.AddAttribute("name", fieldInfo.Name);

                    var type = fieldValue == null ? new NullType() : fieldInfo.FieldType;
                    objectWriter.Write(fieldValue, node, type);
                }
            }
        }
Exemple #7
0
 public void WriteMembers(object instance, ISerialiserNode parentNode, Type type)
 {
     type = type.BaseType;
     if (TypeIsSerializable(type))
     {
         foreach (var baseTypeMembersWriter in baseTypeMembersWriters)
         {
             if (baseTypeMembersWriter.CanWriteMembers(instance, type))
             {
                 using (var baseNode = ownerDocument.CreateElement("base", parentNode))
                 {
                     baseTypeMembersWriter.WriteMembers(instance, baseNode, type);
                 }
                 break;
             }
         }
     }
 }
Exemple #8
0
        public void Write(object instance, INodeWriter parentNode, Type referencedAsType)
        {
            var value = (double)instance;

            string valueString;

            if (value == double.MaxValue)
            {
                valueString = "max";
            }
            else if (value == double.MinValue)
            {
                valueString = "min";
            }
            else if (double.IsPositiveInfinity(value))
            {
                valueString = "posinfinity";
            }
            else if (double.IsNegativeInfinity(value))
            {
                valueString = "neginfinity";
            }
            else if (double.IsNaN(value))
            {
                valueString = "nan";
            }
            else
            {
                valueString = instance.ToString();
            }

            using (var valueNode = ownerDocument.CreateElement("double", parentNode))
            {
                valueNode.InnerText = valueString;
            }
        }