Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
'''
''' Contains function for serializing/deserializing an object to and from a byte array.
'''
Public Class ObjectPacker
'''
''' Serializes an object to a byte array.
'''
''' The object to be serialized.
Public Shared Function GetBytes(ByVal obj As Object) As Byte()
If obj.GetType Is GetType(Byte).MakeArrayType Then
Return CType(obj, Byte())
End If
Dim ret() As Byte = Nothing
Dim blnRetAfterClose As Boolean = False
Dim ms As New MemoryStream()
Dim bf As New BinaryFormatter()
Try
bf.Serialize(ms, obj)
Catch ex As Exception
blnRetAfterClose = True
Finally
ms.Close()
End Try
If blnRetAfterClose Then Return ret
ret = ms.ToArray()
Return ret
End Function
'''
''' Deserializes an object from a byte array.
'''
''' The byte array from which to obtain the object.
Public Shared Function GetObject(ByVal byt() As Byte) As Object
Dim ms As New MemoryStream(byt, False)
Dim bf As New BinaryFormatter()
Dim x As Object
Try
x = bf.Deserialize(ms)
Catch ex As Exception
x = byt
Finally
ms.Close()
End Try
Return x
End Function
End Class