Ejemplo n.º 1
0
 /// <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));
 }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
 /// <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));
 }