/// <summary> /// Deserializes an object from a byte array. /// </summary> /// <typeparam name="T">Type of object. This type must implement IMDSSerializable interface</typeparam> /// <param name="createObjectHandler">A function that creates an instance of that object (T)</param> /// <param name="bytesOfObject">Byte array</param> /// <returns>Deserialized object</returns> public static T DeserializeFromByteArray <T>(CreateSerializableObjectHandler <T> createObjectHandler, byte[] bytesOfObject) where T : IMDSSerializable { return(new MDSDefaultDeserializer(new MemoryStream(bytesOfObject) { Position = 0 }).ReadObject(createObjectHandler)); }
/// <summary> /// Deserializes and returns an object that implements INGRIDSerializable. /// Object creation method is passed as parameter and used to create empty object. /// Created object may be null. /// </summary> /// <typeparam name="T">A class that implements INGRIDSerializable</typeparam> /// <param name="createObjectHandler">A function that creates an empty T object</param> /// <returns>Deserialized object</returns> public T ReadObject <T>(CreateSerializableObjectHandler <T> createObjectHandler) where T : INGRIDSerializable { if (ReadByte() == 0) { return(default(T)); } var serializableObject = createObjectHandler(); serializableObject.Deserialize(this); return(serializableObject); }
/// <summary> /// Deserializes and returns an array of objects that implements INGRIDSerializable. /// Object creation method is passed as parameter and used to create empty object. /// Created array may be null or empty. /// </summary> /// <typeparam name="T">A class that implements INGRIDSerializable</typeparam> /// <param name="createObjectHandler">A function that creates an empty T object</param> /// <returns>Deserialized object</returns> public T[] ReadObjectArray <T>(CreateSerializableObjectHandler <T> createObjectHandler) where T : INGRIDSerializable { var length = ReadInt32(); if (length < 0) { return(null); } if (length == 0) { return(new T[0]); } var objects = new T[length]; for (var i = 0; i < length; i++) { objects[i] = ReadObject(createObjectHandler); } return(objects); }
/// <summary> /// Deserializes an object via reading from a stream. /// </summary> /// <typeparam name="T">Type of object. This type must implement IMDSSerializable interface</typeparam> /// <param name="createObjectHandler">A function that creates an instance of that object (T)</param> /// <param name="stream">Deserialized object</param> /// <returns>Deserialized object</returns> public static T DeserializeFromStream <T>(CreateSerializableObjectHandler <T> createObjectHandler, Stream stream) where T : IMDSSerializable { return(new MDSDefaultDeserializer(stream).ReadObject(createObjectHandler)); }