I have this code:
public byte[] SerializeToBlob()
{
using (var buffer = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(buffer, this);
buffer.Position = 0;
return buffer.ToArray();
}
}
public static ActionData DeserializeFromBlob(byte[] state)
{
using (var buffer = new MemoryStream(state))
{
var formatter = new BinaryFormatter();
var result = formatter.Deserialize(buffer);
return (ActionData) result;
}
}
And am calling it as follows:
byte[] actionDataBlob = ad.SerializeToBlob();
var ad1 = ActionData.DeserializeFromBlob(actionDataBlob);
However, I get an InvalidCastException when it tries to cast the deserialized object to its type:
[A]ActionData cannot be cast to
[B]ActionData. Type A originates from
'XXXX.XXXX.Auditing, Version=1.0.76.0,
Culture=neutral, PublicKeyToken=null'
in the context 'Default' at location
'C:UsersCraigAppDataLocalTempTemporary
ASP.NET
Files
oot5d978e5bffc57fe1assemblydl32b1e5f8f102c846e_9506ca01XXXX.XXXX.Auditing.DLL'.
Type B originates from
'XXXX.XXXX.Auditing, Version=1.0.76.0,
Culture=neutral, PublicKeyToken=null'
in the context 'LoadNeither' at
location 'F:Visual Studio
ProjectsXXXXXXXXXsourceXXXX.XXXX.SilverlightClient.WebinXXXX.XXXX.Auditing.dll'.
(XXXX.XXXX is there to obscure the client's name)
What gives?
I've now asked a related question here:
How should I serialize some simple auditing data for storing in a SQL table?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…