473,770 Members | 6,515 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Deserialize to self

I understand this might not be the optimal method of
deserialization , but how can I deserialize a class to
itself? Something like:

Public Sub New(Optional ByVal filename as string =
Nothing)
If Not IsNothing(filen ame) then
fs = New System.IO.FileS tream(filename,
System.IO.FileM ode.Open)
Dim sf As New
System.Runtime. Serialization.F ormatters.Soap. SoapFormatter
me = CType(sf.Deseri alize(fs), cJob)
End If
End Sub
Nov 20 '05 #1
4 3309
How about creating a shared method called "Load" or something that returns
the deserialized instance?

Alternatively, but messy, you could deserialize to a local variable instance
and then copy all its fields to the current instance.

Hope this helps,

Trev.

"George Addison" <an*******@disc ussions.microso ft.com> wrote in message
news:10******** *************** *****@phx.gbl.. .
I understand this might not be the optimal method of
deserialization , but how can I deserialize a class to
itself? Something like:

Public Sub New(Optional ByVal filename as string =
Nothing)
If Not IsNothing(filen ame) then
fs = New System.IO.FileS tream(filename,
System.IO.FileM ode.Open)
Dim sf As New
System.Runtime. Serialization.F ormatters.Soap. SoapFormatter
me = CType(sf.Deseri alize(fs), cJob)
End If
End Sub

Nov 20 '05 #2
* "George Addison" <an*******@disc ussions.microso ft.com> scripsit:
I understand this might not be the optimal method of
deserialization , but how can I deserialize a class to
itself? Something like:

Public Sub New(Optional ByVal filename as string =
Nothing)
If Not IsNothing(filen ame) then
fs = New System.IO.FileS tream(filename,
System.IO.FileM ode.Open)
Dim sf As New
System.Runtime. Serialization.F ormatters.Soap. SoapFormatter
me = CType(sf.Deseri alize(fs), cJob)
End If
End Sub


You cannot assign anything to 'Me'. I would create a shared method in
the class which returns an instance of the class.

--
Herfried K. Wagner [MVP]
<http://www.mvps.org/dotnet>
Nov 20 '05 #3
George,
Short answer: You Don't!!!!

Long answer: You cannot deserialize a class to "me" as by the time the
constructor executes the object has already been created. Deserialization
creates a new object!

A couple of alternatives would be to add a Factory Method to your class that
deserializes an instance of the class and return it.

Public Class cJob

Private m_attr1 As String
Private m_attr2 As String
Public Shared Function FromFile(ByVal filename as string) As cJob
fs = New System.IO.FileS tream(filename,
System.IO.FileM ode.Open)
Dim sf As New
System.Runtime. Serialization.F ormatters.Soap. SoapFormatter
return DirectCast(sf.D eserialize(fs), cJob)
End
End Class

Note that the above Factory Method is a Shared method (you do not need an
instance of the class to use it) and it returns an instance of the class.

A more involved alternative is to have a class private to cJob that contains
all of cJOb's data, then each method of cJob would delegate to this private
class

Public Class Job

Private Class JobData
Private m_attr1 As String
Private m_attr2 As String
End Class

Private Readonly m_data As JobData

Public Sub New()
m_data = new JobData
End Sub

Public Sub New(ByVal filename as string) fs = New System.IO.FileS tream(filename,
System.IO.FileM ode.Open)
Dim sf As New
System.Runtime. Serialization.F ormatters.Soap. SoapFormatter m_data = DirectCast(sf.D eserialize(fs), JobData)
End

End Class

Of course this runs into problems when you attempt to serialize, as you
cannot really serialize the Job object, you need to serialize the JobData
object. I would favor the Factory Method.

Hope this helps
Jay

"George Addison" <an*******@disc ussions.microso ft.com> wrote in message
news:10******** *************** *****@phx.gbl.. . I understand this might not be the optimal method of
deserialization , but how can I deserialize a class to
itself? Something like:

Public Sub New(Optional ByVal filename as string =
Nothing)
If Not IsNothing(filen ame) then
fs = New System.IO.FileS tream(filename,
System.IO.FileM ode.Open)
Dim sf As New
System.Runtime. Serialization.F ormatters.Soap. SoapFormatter
me = CType(sf.Deseri alize(fs), cJob)
End If
End Sub

Nov 20 '05 #4
I appreciate all your feedback! Thanks.
Nov 20 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
570
by: Carl Mercier | last post by:
Hi! I have 2 different applications/assembly. The first one creates an object and serializes it to a textfile on disk. The second one has the the exact same class (copied/pasted). It reads the file that is on disk and attempts to deserialize it and create a new object. The process works fine if I serialize/deserialize in the first
4
1828
by: Bob Rock | last post by:
Hello, I've got an xml stream that I'd need to deserialize into an instance of a given class A. I'd like to create an instance method on class A (method Deserialize) that takes this XML stream as input and deserializes it "into itself" ... in other words I'd like it to "fill" the instance of class A on which the method has been called instead of returning another instance of class A. The code below gives a good idea of what I'd like:
2
9545
by: Greg | last post by:
I'm writing a class in C# .... I have a collection calls Reports made up of Report objects. I'm trying to deserialize an XML file that looks like : <Reports> <Report> <Title>some title</Title> <Notes> some notes </Notes> </Report> <Report> blah blah blah </Report>
3
5881
by: Amsteel | last post by:
I got something like this in VB.Net <Serializable()> Public Class YQProfileC Inherits CollectionBase Public Sub Save2File(ByVal FileName As String) Dim IFormatter As New BinaryFormatter() Dim FS As FileStream = New FileStream(FileName, FileMode.Create, FileAccess.Write, FileShare.None) IFormatter.Serialize(FS, Me) FS.Close()
2
6073
by: PCH | last post by:
I have 2 functions, one to serialize an object, and one to deserialize it. I can serialize just fine, the problem is when I try to deserialize it later... I get an error: {"Invalid BinaryFormatter stream. " } I looked at the serialized string vs whats passed into the deserialize
0
2077
by: Fruber Malcome | last post by:
I'm getting a very weird exception and hoping someone may be able to help. I have an Office Add-In that lives in a .dll (for email reference ai.dll) ai.dll makes calls into the core part of the application implementation in another .dll (let's call that app.dll). app.dll makes a function call into another dll (let's call that one dep.dll). dep.dll has some code in it where it deserializes a memorystream using a binaryformatter.
2
11540
by: Thomas S | last post by:
Any suggestions on how to deserialize an object from one line of XML? I'm trying to deserialize multiple objects from one XML document, each object on one line of the file. The serialization is working, but when I try to read the line back into a MemoryStream, and then to deserialize from that, I get an error that the root node doesn't exist. Example XML lines: <?xml version="1.0"?><LogItem
4
4652
by: Anbu | last post by:
Hi All, I need to Deserialize the SoapService's SoapEnvelope response object. Here is the Body of the SoapEnvelope received as respone, <q1:serviceResponse xmlns:q1="urn:CallSetup"><serviceReturn xsi:type="q1:response" xmlnssi="http://www.w3.org/2001/XMLSchema-instance">ok</serviceReturn></q1:serviceResponse>
0
2256
by: connectpalm03-forum | last post by:
I have a class named (MyClassA) in ControlClasses.dll and was able to serialize it to database. Like below SaveTo(MemoryStream stream) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, this); }
0
9592
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10230
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10058
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10004
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9870
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
6678
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5313
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
3576
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2817
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.