Esempio n. 1
0
        private bool FillMultiDimensionalArrayProperty(MultiDimensionalArrayProperty property, InternalTypeInfo info,
                                                       object value)
        {
            if (property == null)
            {
                return(false);
            }
            property.ElementType = info.ElementType;

            var analyzer = new ArrayAnalyzer(value);

            // DimensionInfos
            property.DimensionInfos = analyzer.ArrayInfo.DimensionInfos;

            // Items
            foreach (var indexSet in analyzer.GetIndexes())
            {
                var subValue     = ((Array)value).GetValue(indexSet);
                var itemProperty = CreateProperty(null, subValue);

                property.Items.Add(new MultiDimensionalArrayItem(indexSet, itemProperty));
            }

            return(true);
        }
Esempio n. 2
0
        private object createObjectFromMultidimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            // determine array type
            MultiDimensionalArrayCreatingInfo creatingInfo =
                getMultiDimensionalArrayCreatingInfo(property.DimensionInfos);

            // Instantiating the array
            Array array = createArrayInstance(property.ElementType, creatingInfo.Lengths, creatingInfo.LowerBounds);

            if (property.Reference != null)
            {
                // property has Reference, only objects referenced multiple times
                // have properties with references. Object must be cached to
                // resolve its references in the future.
                _objectCache.Add(property.Reference.Id, array);
            }

            // fill the values
            foreach (MultiDimensionalArrayItem item in property.Items)
            {
                object value = CreateObject(item.Value);
                if (value != null)
                {
                    array.SetValue(value, item.Indexes);
                }
            }

            return(array);
        }
Esempio n. 3
0
        private object CreateObjectFromMultidimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            // determine array type
            var creatingInfo =
                GetMultiDimensionalArrayCreatingInfo(property.DimensionInfos);

            // Instantiating the array
            var array = CreateArrayInstance(property.ElementType, creatingInfo.Lengths, creatingInfo.LowerBounds);

            if (property.Reference != null)
            {
                _objectCache.Add(property.Reference.Id, array);
            }

            // fill the values
            foreach (var item in property.Items)
            {
                var value = CreateObject(item.Value);
                if (value != null)
                {
                    array.SetValue(value, item.Indexes);
                }
            }

            return(array);
        }
        private void parseMultiDimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            // Element Type
            property.ElementType = this._reader.ReadType();

            // Dimension Infos
            this.readDimensionInfos(property.DimensionInfos);

            // Items
            this.readMultiDimensionalArrayItems(property.Items, property.ElementType);
        }
        private void parseMultiDimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            property.ElementType = property.Type != null?TypeInfo.GetTypeInfo(property.Type).ElementType : null;

            foreach (string subElement in _reader.ReadSubElements())
            {
                if (subElement == SubElements.Dimensions)
                {
                    // Read dimensions
                    readDimensionInfos(property.DimensionInfos);
                }

                if (subElement == SubElements.Items)
                {
                    // Read items
                    readMultiDimensionalArrayItems(property.Items, property.ElementType);
                }
            }
        }
Esempio n. 6
0
        private bool FillMultiDimensionalArrayProperty(MultiDimensionalArrayProperty property, TypeInfo info, object value)
        {
            if (property == null) {
                return false;
            }
            property.ElementType = info.ElementType;

            var analyzer = new ArrayAnalyzer(value);

            // DimensionInfos
            property.DimensionInfos = analyzer.ArrayInfo.DimensionInfos;

            // Items
            foreach (var indexSet in analyzer.GetIndexes()) {
                var subValue = ((Array)value).GetValue(indexSet);
                var itemProperty = CreateProperty(null, subValue);

                property.Items.Add(new MultiDimensionalArrayItem(indexSet, itemProperty));
            }
            return true;
        }
Esempio n. 7
0
        private object createObjectFromMultidimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            // determine array type
            var creatingInfo = getMultiDimensionalArrayCreatingInfo(property.DimensionInfos);

            // Instantiating the array
            var array = createArrayInstance(property.ElementType, creatingInfo.Lengths, creatingInfo.LowerBounds);

            // fill the values
            foreach (var item in property.Items)
            {
                var value = CreateObject(item.Value);
                if (value != null)
                {
                    array.SetValue(value, item.Indexes);
                }
            }

            return array;
        }
Esempio n. 8
0
        private object createObjectFromMultidimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            // determine array type
            MultiDimensionalArrayCreatingInfo creatingInfo =
                getMultiDimensionalArrayCreatingInfo(property.DimensionInfos);

            // Instantiating the array
            Array array = createArrayInstance(property.ElementType, creatingInfo.Lengths, creatingInfo.LowerBounds);

            if (property.Reference != null)
            {
                // property has Reference, only objects referenced multiple times
                // have properties with references. Object must be cached to
                // resolve its references in the future.
                _objectCache.Add(property.Reference.Id, array);
            }

            // fill the values
            foreach (MultiDimensionalArrayItem item in property.Items)
            {
                object value = CreateObject(item.Value);
                if (value != null)
                {
                    array.SetValue(value, item.Indexes);
                }
            }

            return array;
        }
        private void parseMultiDimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            // Element Type
            property.ElementType = _reader.ReadType();

            // Dimension Infos
            readDimensionInfos(property.DimensionInfos);

            // Items
            readMultiDimensionalArrayItems(property.Items, property.ElementType);
        }
        private void parseMultiDimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            property.ElementType = property.Type != null ? Polenter.Serialization.Serializing.TypeInfo.GetTypeInfo(property.Type, _simpleTypes).ElementType : null;

            foreach (string subElement in _reader.ReadSubElements())
            {
                if (subElement == SubElements.Dimensions)
                {
                    // Read dimensions
                    readDimensionInfos(property.DimensionInfos);
                }

                if (subElement == SubElements.Items)
                {
                    // Read items
                    readMultiDimensionalArrayItems(property.Items, property.ElementType);
                }
            }
        }
Esempio n. 11
0
        private void ParseMultiDimensionalArrayProperty(MultiDimensionalArrayProperty property)
        {
            property.ElementType = property.Type != null ? TypeInfo.GetTypeInfo(property.Type).ElementType : null;

            foreach (var subElement in _reader.ReadSubElements()) {
                if (subElement == SubElements.Dimensions) {
                    // Read dimensions
                    ReadDimensionInfos(property.DimensionInfos);
                }

                if (subElement == SubElements.Items) {
                    // Read items
                    ReadMultiDimensionalArrayItems(property.Items, property.ElementType);
                }
            }
        }
Esempio n. 12
0
        private void parseMultiDimensionalArrayProperty(XmlReader reader, MultiDimensionalArrayProperty property)
        {
            property.ElementType = getElementTypeAttribute(reader);

            while (reader.Read())
            {
                // DimensionInfos
                if (areDimensionInfosFound(reader))
                {
                    using (var subReader = new SubtreeReader(reader))
                    {
                        readDimensionInfos(subReader.Reader, property.DimensionInfos);
                    }
                }

                // Items
                if (areItemsFound(reader))
                {
                    using (var subReader = new SubtreeReader(reader))
                    {
                        readMultiDimensionalArrayItems(subReader.Reader, property.Items, property.ElementType);
                    }
                }
            }
        }