Exemple #1
0
        public void ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            var baseNodeReader = nodeReader.GetNextChildNode();

            if (baseNodeReader != null)
            {
                if (baseNodeReader.Name != "base")
                {
                    throw new NXmlReaderFormatException(
                              string.Format("Found a {0} node when expecting a base node.", baseNodeReader.Name));
                }

                using (var baseClassTypeNode = baseNodeReader.GetNextChildNode())
                {
                    baseClassMembersReader.ReadMembers(instance, baseClassTypeNode, type.BaseType);
                }

                baseNodeReader.Dispose();
            }
        }
        private void ReadFields(object instance, INXmlElementReader membersNodeReader, IDataType type)
        {
            INXmlElementReader fieldReader;

            while ((fieldReader = membersNodeReader.GetNextChildNode("f")) != null)
            {
                if (fieldReader.Name != "f")
                {
                    throw new NXmlReaderFormatException(
                              string.Format("Invalid node '{0}' found when expecting a field node", fieldReader.Name));
                }

                try
                {
                    var members = memberReader.Read(fieldReader, type);
                    members.SetValue(instance);
                }
                catch (Exception exception)
                {
                    var memberName = fieldReader.Attributes.Get("name");
                    throw new NSerializerException(
                              string.Format("Error reading member '{0}.{1}", type.FullName, memberName),
                              exception);
                }

                fieldReader.Dispose();
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            object objectInstance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var innerText = itemNodesReader.GetPayload().Trim('\r', '\n', ',', '\t').Replace("\r\n", string.Empty);
                var values    = innerText.Split(',');

                var valuesList = new ArrayList();
                foreach (var valueText in values)
                {
                    valuesList.Add(double.Parse(valueText));
                }

                var typeName   = nodeReader.Attributes.Get("type");
                var objectType = typeFinder.GetType(typeName);

                objectInstance = valuesList.ToArray(objectType.GetElementType().GetTargetType());

                readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);
            }

            return(objectInstance);
        }
        public object Get(INXmlElementReader nodeReader)
        {
            object objectInstance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var innerText = itemNodesReader.GetPayload().Trim('\r', '\n', ',', '\t').Replace("\r\n", string.Empty);
                var values = innerText.Split(',');

                var valuesList = new ArrayList();
                foreach (var valueText in values)
                {
                    valuesList.Add(double.Parse(valueText));
                }

                var typeName = nodeReader.Attributes.Get("type");
                var objectType = typeFinder.GetType(typeName);

                objectInstance = valuesList.ToArray(objectType.GetElementType().GetTargetType());

                readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);
            }

            return objectInstance;
        }
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var dictionary = (IDictionary) instance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItemPairs = itemNodesReader.Attributes.GetInteger("count");
                for (var itemIndex = 0; itemIndex < numberOfItemPairs; itemIndex++)
                {
                    object key;
                    object value;

                    using (var keyReader = itemNodesReader.GetNextChildNode())
                    {
                        key = objectReader.Get(keyReader);
                    }

                    using (var valueReader = itemNodesReader.GetNextChildNode())
                    {
                        value = objectReader.Get(valueReader);
                    }

                    dictionary.Add(key, value);
                }
            }
        }
Exemple #6
0
        public void ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            var baseNodeReader = nodeReader.GetNextChildNode();
            if (baseNodeReader != null)
            {
                if (baseNodeReader.Name != "base")
                {
                    throw new NXmlReaderFormatException(
                        string.Format("Found a {0} node when expecting a base node.", baseNodeReader.Name));
                }

                using (var baseClassTypeNode = baseNodeReader.GetNextChildNode())
                {
                    baseClassMembersReader.ReadMembers(instance, baseClassTypeNode, type.BaseType);
                }

                baseNodeReader.Dispose();
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var valuesList = new ArrayList();

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                INXmlElementReader itemNode;
                while ((itemNode = itemNodes.GetNextChildNode()) != null)
                {
                    if (objectReader.CanRead(itemNode))
                    {
                        valuesList.Add(objectReader.Get(itemNode));
                    }

                    itemNode.Dispose();
                }
            }

            var elementType = typeFinder.GetType(nodeReader.Attributes.Get("type")).GetElementType();
            var objectInstance = valuesList.ToArray(elementType.GetTargetType());

            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);

            return objectInstance;
        }
Exemple #8
0
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var dictionary = (IDictionary)instance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItemPairs = itemNodesReader.Attributes.GetInteger("count");
                for (var itemIndex = 0; itemIndex < numberOfItemPairs; itemIndex++)
                {
                    object key;
                    object value;

                    using (var keyReader = itemNodesReader.GetNextChildNode())
                    {
                        key = objectReader.Get(keyReader);
                    }

                    using (var valueReader = itemNodesReader.GetNextChildNode())
                    {
                        value = objectReader.Get(valueReader);
                    }

                    dictionary.Add(key, value);
                }
            }
        }
Exemple #9
0
        public object Get(INXmlElementReader nodeReader)
        {
            var valuesList = new ArrayList();

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                INXmlElementReader itemNode;
                while ((itemNode = itemNodes.GetNextChildNode()) != null)
                {
                    if (objectReader.CanRead(itemNode))
                    {
                        valuesList.Add(objectReader.Get(itemNode));
                    }

                    itemNode.Dispose();
                }
            }

            var elementType    = typeFinder.GetType(nodeReader.Attributes.Get("type")).GetElementType();
            var objectInstance = valuesList.ToArray(elementType.GetTargetType());

            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);

            return(objectInstance);
        }
        private void ReadFields(object instance, INXmlElementReader membersNodeReader, IDataType type)
        {
            INXmlElementReader fieldReader;
            while ((fieldReader = membersNodeReader.GetNextChildNode("f")) != null)
            {
                if (fieldReader.Name != "f")
                {
                    throw new NXmlReaderFormatException(
                        string.Format("Invalid node '{0}' found when expecting a field node", fieldReader.Name));
                }

                try
                {
                    var members = memberReader.Read(fieldReader, type);
                    members.SetValue(instance);
                }
                catch (Exception exception)
                {
                    var memberName = fieldReader.Attributes.Get("name");
                    throw new NSerializerException(
                        string.Format("Error reading member '{0}.{1}", type.FullName, memberName),
                        exception);
                }

                fieldReader.Dispose();
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type     = typeFinder.GetType(typeName);
            var instance = Activator.CreateInstance(type.GetTargetType());

            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            return(instance);
        }
Exemple #12
0
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var list = (IList) instance;

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItems = itemNodes.Attributes.GetInteger("count");

                while (numberOfItems-- > 0)
                {
                    INXmlElementReader itemNode;
                    using (itemNode = itemNodes.GetNextChildNode())
                    {
                        list.Add(objectReader.Get(itemNode));
                    }
                }
            }
        }
Exemple #13
0
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var list = (IList)instance;

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItems = itemNodes.Attributes.GetInteger("count");

                while (numberOfItems-- > 0)
                {
                    INXmlElementReader itemNode;
                    using (itemNode = itemNodes.GetNextChildNode())
                    {
                        list.Add(objectReader.Get(itemNode));
                    }
                }
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type = typeFinder.GetType(typeName);
            var instance = Activator.CreateInstance(type.GetTargetType());

            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            return instance;
        }
Exemple #15
0
        public IMemberValue Read(INXmlElementReader nodeReader, IDataType type)
        {
            var fieldName = nodeReader.Attributes.Get("name");

            var field = type.GetField(fieldName);
            if (field == null)
            {
                throw new UnableToReadXMLTextException(
                    string.Format("Unable to find field '{0}'.", fieldName));
            }

            IMemberValue value;
            using (var valueNode = nodeReader.GetNextChildNode())
            {
                value = new FieldValue(field, objectReader.Get(valueNode));
            }

            return value;
        }
Exemple #16
0
        public IMemberValue Read(INXmlElementReader nodeReader, IDataType type)
        {
            var fieldName = nodeReader.Attributes.Get("name");

            var field = type.GetField(fieldName);

            if (field == null)
            {
                throw new UnableToReadXMLTextException(
                          string.Format("Unable to find field '{0}'.", fieldName));
            }

            IMemberValue value;

            using (var valueNode = nodeReader.GetNextChildNode())
            {
                value = new FieldValue(field, objectReader.Get(valueNode));
            }

            return(value);
        }