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); } }
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); }