Hello,
I am having an application in C# which is having a singleton class.
Class definition is given below
[Serializable]
public sealed class GenSetup : ISerializable
{
private static readonly GenSetup GenSetupObj = new GenSetup ();
public static GenSetup GetInstance
{
get
{
return GenSetupObj;
}
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.SetType(typeof(SingletonSerializationHelper));
}
public void Serialize()
{
FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
try
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, GenSetup.GetInstance);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
}
public void DeSerialize()
{
FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter();
GenSetup pGenSetup = (GenSetup)formatter.Deserialize(fs);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
}
}
[Serializable]
internal sealed class SingletonSerializationHelper : IObjectReference
{
public Object GetRealObject(StreamingContext context)
{
return GenSetup.GetInstance;
}
}
Now the problem is when Serialize() function is getting called, GenSetup.Getinstance is having all the updated data.
But while calling deSerialize() function it doesn't return saved values.
If i change the above GetObjectData function and add new constructor as
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("Sequencer", m_IsSequencer, typeof(bool));
info.AddValue("Strength", m_bIsStrength, typeof(bool));
}
public GenSetup(SerializationInfo info, StreamingContext context)
{
m_IsSequencer = info.GetBoolean("Sequencer");
m_bIsStrength = info.GetBoolean("Strength");
}
then its working fine.But i don't want to add all variables as i am having lots of data.
I am not getting where the code is going wrong.
Please help me to rectify my code
Thanks in Advanced.