devxlogo

CloneObject – cloning an object by serializing it to a memory stream

CloneObject – cloning an object by serializing it to a memory stream

' A reusable function that does object cloning' by serializing it to a memory streamFunction CloneObject(ByVal obj As Object) As Object    ' Create a memory stream and a formatter.    Dim ms As New System.IO.MemoryStream(1000)    Dim bf As New BinaryFormatter(Nothing, _        New StreamingContext(StreamingContextStates.Clone))    ' Serialize the object into the stream.    bf.Serialize(ms, obj)    ' Position streem pointer back to first byte.    ms.Seek(0, SeekOrigin.Begin)    ' Deserialize into another object.    CloneObject = bf.Deserialize(ms)    ' release memory.    ms.Close()End Function' this procedure tests object cloningSub TestCloneObject()    ' create an object graph    Dim p1 As New Person("Joe", "Doe", #1/2/1960#)    Dim p2 As New Person("Ann", "Smith", #3/4/1965#)    p1.Spouse = p2    p2.Spouse = p1    ' Clone it    Dim q1 As Person = DirectCast(CloneObject(p1), Person)    Dim q2 As Person = q1.Spouse    ' Prove that properties were copied correctly.    Console.WriteLine(q1.FirstName & " " & q1.LastName)    Console.WriteLine(q2.FirstName & " " & q2.LastName)    Console.WriteLine("P1 is Q1 = {0}", p1 Is q1)    Console.WriteLine("P2 is Q2 = {0}", p2 Is q2)End Sub' Note: This code is taken from Francesco Balena's' "Programming Microsoft Visual Basic .NET" - MS Press 2002, ISBN 0735613753' You can read a free chapter of the book at ' http://www.vb2themax.com/HtmlDoc.asp?Table=Books&ID=101000

devx-admin

Share the Post: