Exemple #1
0
        public override void Read(Stream stream)
        {
            _elementType = (SerializeTypeEnum)stream.ReadByte();
            var elementType = SerializeTypes.GetType(_elementType);

            _rank       = stream.ReadInt32();
            _dimensions = new int[_rank];
            for (int i = 0; i < _rank; i++)
            {
                _dimensions[i] = stream.ReadInt32();
            }
            int currDim = 0;
            int count   = 1;
            var ind     = new int[_rank];

            for (int i = 0; i < _rank; i++)
            {
                count *= _dimensions[i];
            }
            _values = new object[count];
            for (int i = 0; i < count; i++)
            {
                ind        = MySerializer.GetNewArrayIndexes(_rank, _dimensions, ind, ref currDim);
                _values[i] = stream.ReadPrimitiveOrStringType(elementType);
            }
        }
Exemple #2
0
        public override object Get(List <ISerializeInstanceInfo> instanceInfos)
        {
            var arr = Array.CreateInstance(SerializeTypes.GetType(_elementType), _dimensions);

            this.Instance = arr;
            int count = 1;
            var ind   = new int[_rank];

            for (int i = 0; i < _rank; i++)
            {
                count *= _dimensions[i];
            }
            int currDim = 0;

            for (int i = 0; i < count; i++)
            {
                ind = MySerializer.GetNewArrayIndexes(_rank, _dimensions, ind, ref currDim);
                arr.SetValue(_values[i], ind);
            }
            return(arr);
        }
 internal PrimitiveTypeInfo(SerializeTypeEnum type, ISerializationContext ctx)
     : base(ctx)
 {
     _type = SerializeTypes.GetType(type);
 }