Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB7
Expertise: Intermediate
Nov 11, 2002

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

' A reusable function that does object cloning
' by serializing it to a memory stream

Function 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 cloning

Sub 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
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap