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 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
* "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>
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
I appreciate all your feedback! Thanks. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
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
|
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:
|
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>
|
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()
|
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
| |
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.
|
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
|
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>
|
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);
}
|
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...
|
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...
| |
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...
|
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,...
|
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...
|
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();...
|
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...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
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...
| |