Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

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



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.
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.



Thanks for your registration, follow us on our social networks to keep up-to-date