Ejemplo n.º 1
0
        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());
                }
            }
        }
Ejemplo n.º 2
0
        public void Write_BuiltsXmlNodesAndAddsObjectToCache_IfAnArray()
        {
            var parentNode = NewMock <INodeWriter>();
            var arrayNode  = CreateXmlNode("array");
            var itemsNode  = CreateXmlNode("items");

            object value = new[] { 1, 3 };

            StubTypeMapper();

            Expect.Once.On(valueCache).Method("Add").With(value).Will(Return.Value(23));

            Expect.Once.On(ownerDocument).Method("CreateArrayElement").With(value.GetType().ToString(), 23, parentNode).
            Will(
                Return.Value(arrayNode));
            Expect.Once.On(ownerDocument).Method("CreateItemsElement").With(arrayNode).Will(Return.Value(itemsNode));

            Expect.Once.On(itemsNode).Method("Dispose").WithNoArguments();
            Expect.Once.On(arrayNode).Method("Dispose").WithNoArguments();

            Expect.Once.On(objectWriter).Method("Write").With(1, itemsNode, typeof(Int32));
            Expect.Once.On(objectWriter).Method("Write").With(3, itemsNode, typeof(Int32));

            writer.Write(value, parentNode, value.GetType());
        }
Ejemplo n.º 3
0
        public void Write_BuiltsXmlNode()
        {
            var parentNode = NewMock <INodeWriter>();
            var enumNode   = CreateXmlNode("null");

            Expect.Once.On(ownerDocument).Method("CreateNullValueElement").With(parentNode).Will(Return.Value(enumNode));
            Expect.Once.On(enumNode).Method("Dispose").WithNoArguments();

            writer.Write(null, parentNode, parentNode.GetType());
        }
Ejemplo n.º 4
0
        private void WriteItems(INodeWriter listNode, IList items)
        {
            using (var itemsNode = ownerDocument.CreateItemsElement(listNode))
            {
                itemsNode.AddAttribute("count", items.Count);

                foreach (var item in items)
                {
                    objectWriter.Write(item, itemsNode, item.GetType());
                }
            }
        }
        public void Write_BuiltsXmlNode_WithntegerValue()
        {
            var parentNode = NewMock <INodeWriter>();
            var valueNode  = CreateXmlNode("primitive");

            Expect.Once.On(ownerDocument).Method("CreateElement").With("primitive", parentNode).Will(
                Return.Value(valueNode));
            Expect.Once.On(valueNode).Method("AddAttribute").With("type", "System.Int32");
            Expect.Once.On(valueNode).SetProperty("InnerText").To("1");
            Expect.Once.On(valueNode).Method("Dispose").WithNoArguments();

            writer.Write(1, parentNode, parentNode.GetType());
        }
        public void Write_BuiltsXmlNode()
        {
            var parentNode    = NewMock <INodeWriter>();
            var referenceNode = CreateXmlNode("objref");

            Expect.Once.On(document).Method("CreateObjectRefernceElement").With(parentNode).Will(
                Return.Value(referenceNode));
            Expect.Once.On(valuesCache).Method("GetID").With(this).Will(Return.Value(7));
            Expect.Once.On(referenceNode).Method("AddAttribute").With("ID", 7);

            Expect.Once.On(referenceNode).Method("Dispose").WithNoArguments();

            writer.Write(this, parentNode, parentNode.GetType());
        }
Ejemplo n.º 7
0
        public void Write_BuiltsXmlNode()
        {
            var parentNode = NewMock <INodeWriter>();
            var valueNode  = CreateXmlNode("enum");

            StubTypeMapper();

            Expect.Once.On(ownerDocument).Method("CreateTypedElement").With("enum", EnumA.ValueB.GetType().ToString(),
                                                                            parentNode).
            Will(Return.Value(valueNode));
            Expect.Once.On(valueNode).SetProperty("InnerText").To("ValueB");
            Expect.Once.On(valueNode).Method("Dispose").WithNoArguments();

            writer.Write(EnumA.ValueB, parentNode, parentNode.GetType());
        }
Ejemplo n.º 8
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);
                }
            }
        }
Ejemplo n.º 9
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.CreateArrayElement(
                       typeName, valueID, parentNode))
            {
                using (var itemsNode = ownerDocument.CreateItemsElement(arrayNode))
                {
                    foreach (var listItem in (IEnumerable)instance)
                    {
                        var itemType = listItem == null?instance.GetType().GetElementType() : listItem.GetType();

                        objectWriter.Write(listItem, itemsNode, itemType);
                    }
                }
            }
        }
Ejemplo n.º 10
0
 public void Write(object instance, INodeWriter parentNode, Type referencedAsType)
 {
     objectWriter.Write(instance, parentNode, referencedAsType);
 }
Ejemplo n.º 11
0
        void ICustomSerializable.Write(IObjectWriter writer)
        {
            Guard.NotNull(writer, "writer");

            writer.Write(Location);
            writer.Write(Speeds.Count);
            foreach(var speed in Speeds)
            {
                writer.Write(speed.Key);
                writer.Write(speed.Value);
            }
        }