object IPrimitive.GetValueField(StreamExtractorHandler streamExtractor) { byte[] bytes = streamExtractor(length); byte singleByte = bytes[0]; return(singleByte); }
object IConcreteAction.Deserialize(StreamExtractorHandler streamExtractor) { IPrimitive lenStrPrimitive = PrimitiveFactory.MakePrimitive(typeof(ushort)); ushort lenStr = (ushort)lenStrPrimitive.GetValueField(streamExtractor); lenStr *= 2; byte[] bytesRepresentString = streamExtractor(lenStr); object recordObject = Encoding.Unicode.GetString(bytesRepresentString); return(recordObject); }
private Array ArraySetElementValue(int[] lengths, StreamExtractorHandler streamExtractor) //заполнение элементов массива значениями { IConcreteAction action = MakeActionForElementType(); var arrayIndex = new ArrayIterator(lengths); for (int i = 0; i < array.Length; i++) { object elementValue = action.Deserialize(streamExtractor); int[] indices = arrayIndex.GetNext(); array.SetValue(elementValue, indices); } return(array); }
private int[] RecoveryDimensional(StreamExtractorHandler streamExtractor) //восстановление измерений { byte rank = RankRecovery(streamExtractor); int[] lengths = new int[rank]; IPrimitive lengthPrimitive = PrimitiveFactory.MakePrimitive(typeof(ushort)); for (int dimension = 0; dimension < rank; dimension++) { lengths[dimension] = (ushort)lengthPrimitive.GetValueField(streamExtractor); } return(lengths); }
object IConcreteAction.Deserialize(StreamExtractorHandler streamExtractor) { object recordObject = Activator.CreateInstance(type); FieldInfo[] fieldInfos = type.GetFields(); foreach (FieldInfo field in fieldInfos) { IConcreteAction action = ActionFactory.MakeAction(field.FieldType); object fieldValue = action.Deserialize(streamExtractor); field.SetValue(recordObject, fieldValue); } return(recordObject); }
object IPrimitive.GetValueField(StreamExtractorHandler streamExtractor) { byte[] bytes = streamExtractor(length); return(BitConverter.ToDouble(bytes, 0)); }
private byte RankRecovery(StreamExtractorHandler streamExtractor) // восстановление числа измерений { IPrimitive rankPrimitive = PrimitiveFactory.MakePrimitive(typeof(byte)); return((byte)rankPrimitive.GetValueField(streamExtractor)); }
object IConcreteAction.Deserialize(StreamExtractorHandler streamExtractor) { int[] lengths = RecoveryDimensional(streamExtractor); array = ActivateInstance(lengths); return(ArraySetElementValue(lengths, streamExtractor)); }
object IConcreteAction.Deserialize(StreamExtractorHandler streamExtractor) { IPrimitive primitive = PrimitiveFactory.MakePrimitive(type); return(primitive.GetValueField(streamExtractor)); }