Re: BinaryFormatter.Deserialize

From: Igor (noone_at_hotmail.com)
Date: 10/12/04


Date: Tue, 12 Oct 2004 13:32:04 +0200


[Serializable()]

public class ApplicationInfo:IDisposable,ISerializable

{

private Guid session; // 16 bytes

private Guid sessionNW; // 16 bytes

private string ANI;

private string DNIS;

private string mqNW; // networking queue

private string parent;

private string child;

private string applicationQueue;

private int machineID;

private int boardID;

private int channelID;

private string applicationName = "";

public ApplicationInfo()

{

}

public ApplicationInfo(SerializationInfo info, StreamingContext ctxt)

{

session = (Guid)info.GetValue("session", typeof(Guid));

sessionNW = (Guid)info.GetValue("sessionNW", typeof(Guid));

ANI = (string)info.GetValue("ANI", typeof(string));

DNIS = (string)info.GetValue("DNIS", typeof(string));

mqNW = (string)info.GetValue("mqNW", typeof(string));

parent = (string)info.GetValue("parent", typeof(string));

child = (string)info.GetValue("child", typeof(string));

applicationQueue = (string)info.GetValue("applicationQueue",
typeof(string));

applicationName = (string)info.GetValue("applicationName", typeof(string));

machineID = (int)info.GetValue("machineID", typeof(int));

boardID = (int)info.GetValue("boardID", typeof(int));

channelID = (int)info.GetValue("channelID", typeof(int));

}

public ApplicationInfo(string session, string sessionNW, string ANI, string
DNIS, string mqNW, string parent, string child, string applicationQueue, int
machine, int board, int channel, string applicationName)

{

this.session = new Guid(session);

this.sessionNW = new Guid(sessionNW);

this.ANI = ANI;

this.DNIS = DNIS;

this.mqNW = mqNW;

this.parent = parent;

this.child = child;

this.applicationQueue = applicationQueue;

this.machineID = machine;

this.boardID = board;

this.channelID = channel;

this.applicationName = applicationName;

}

#region IDisposable Members

public void Dispose()

{

// TODO: Add ApplicationInfo.Dispose implementation

}

#endregion

#region ISerializable Members

public void GetObjectData(SerializationInfo info, StreamingContext context)

{

info.AddValue("session", session);

info.AddValue("sessionNW", sessionNW);

info.AddValue("ANI", ANI);

info.AddValue("DNIS", DNIS);

info.AddValue("mqNW", mqNW);

info.AddValue("parent", parent);

info.AddValue("child", child);

info.AddValue("applicationQueue", applicationQueue);

info.AddValue("machineID", machineID);

info.AddValue("boardID", boardID);

info.AddValue("channelID", channelID);

info.AddValue("applicationName", applicationName);

}

#endregion

}

.........

ApplicationInfo app;

MemoryStream stream = new MemoryStream();

BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(stream, app);

MessageQueue mq = new MessageQueue(mqPath);

Message m = new Message(stream, new BinaryMessageFormatter());

mq.Formatter = new BinaryMessageFormatter();

mq.Send(m);

........

public void OnReceiveCompleted(Object source, ReceiveCompletedEventArgs
asyncResult)

{

try

{

MessageQueue mq = (MessageQueue)source;

Message m = mq.EndReceive(asyncResult.AsyncResult);

m.Formatter = new BinaryMessageFormatter();

incomingMessage(source, new IncomingMessageEventArgs((object)m.BodyStream,
false));

mq.BeginReceive();

}

catch(Exception ex)

{

Console.WriteLine(ex.ToString());

}

}

.....

public void OnIncomingMessage(object source, IncomingMessageEventArgs e)

{

BinaryFormatter formatter = new BinaryFormatter();

application = null;

application = (ApplicationInfo)formatter.Deserialize((Stream)e.getDocument);

}

"Jon Skeet [C# MVP]" <skeet@pobox.com> wrote in message
news:MPG.1bd5c5ac27ec3fb598b67a@msnews.microsoft.com...
> Igor <noone@hotmail.com> wrote:
> > While executing BinaryFormatter.Deserialize() I get:
> > System.InvalidCastException: Specified cast is not valid.
> > I implemented ISerializable interface. What may be a problem?
>
> Could you post a short but complete program which demonstrates the
> problem?
>
> See http://www.pobox.com/~skeet/csharp/complete.html for details of
> what I mean by that.
>
> --
> Jon Skeet - <skeet@pobox.com>
> http://www.pobox.com/~skeet
> If replying to the group, please do not mail me too



Relevant Pages

  • Re: BinaryFormatter.Deserialize
    ... > private Guid session; // 16 bytes ... > private string DNIS; ... > private string applicationQueue; ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: BinaryFormatter.Deserialize
    ... private Guid session; // 16 bytes ... private string DNIS; ... applicationQueue = info.GetValue); ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Reflection in 1.1 and 2.0 - generic, fast copy delegate?
    ... Your delegate solution is is still significantly more efficient that reflection. ... Also you need permissions to emit code with the LCG version whereas using delegates does not appear to require permissions beyond those for public reflection and so you can have a fast solution even in low trust environments. ... private string _firstName; ...
    (microsoft.public.dotnet.framework.clr)
  • Re: EJB3 Newbie & Persistence
    ... private String name; ... CustomerCMP customer; ... public void setAddress{ ...
    (comp.lang.java.beans)
  • Struts 1.2 - HTML:SELECT problem
    ... So the attribute members has data. ... private String staff_number; ... Session session = null; ...
    (comp.lang.java.programmer)