Deserialization constructor

  • Thread starter Thread starter MP
  • Start date Start date
M

MP

Hello,
I am having a bit of a problem with Deserialization. I need to "override"
the special constructor used when
an object is deserialize. In thes constructor I have to execute some code
that is requierd by our framework and then call the
'original' special constructor.

How can I call the original constructor from my deserialization
constructor? I do not want to have to manually
do all the assignents to my class members, I just what to call "something"
that knows what to do.


Can anyone point me in the right direction?


[Serializable]

public class SomeEntity : ISerializable

{
public SomeEntity(SerializationInfo info, StreamingContext context)

{
// I want to have my code here...
// some code.

// Then call the "default" constructor.
// What code do I put in there?

}

int m_code = 0;

string m_description = "";

}


Thank you!
-Martin
 
Hello,
I am having a bit of a problem with Deserialization. I need to "override"
the special constructor used when
an object is deserialize. In thes constructor I have to execute some code
that is requierd by our framework and then call the
'original' special constructor.

How can I call the original constructor from my deserialization
constructor? I do not want to have to manually
do all the assignents to my class members, I just what to call "something"
that knows what to do.


Can anyone point me in the right direction?


[Serializable]

public class SomeEntity : ISerializable

{
public SomeEntity(SerializationInfo info, StreamingContext context)

{
// I want to have my code here...
// some code.

// Then call the "default" constructor.
// What code do I put in there?

}

int m_code = 0;

string m_description = "";

}


Thank you!
-Martin


If you implement ISerializable, then you promise that you will take care
of the serialization. So, it won't work the way you want it.

Sunny
 
Martin,

You can always call the base constructor with the base keyword, like
this:

public SomeEntity(SerializationInfo info, StreamingContext context) :
base(info, context)
{
// Do other code here.
}

However, this means that the base class' constructor will be called
before your constructor (which makes sense, since the base object fields
have to be fully initialized before you start making changes to it).

Hope this helps.
 
Back
Top