У меня есть этот код:
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;
}
}
И я вызываю его следующим образом:
byte[] actionDataBlob = ad.SerializeToBlob();
var ad1 = ActionData.DeserializeFromBlob(actionDataBlob);
Однако, я получаю InvalidCastException, когда он пытается передать десериализованный объект в его тип:
[A] ActionData не может быть отброшена [B] ActionData. Тип А берется из 'XXXX.XXXX.Auditing, Version = 1.0.76.0, Культура = нейтральная, PublicKeyToken = null ' в контексте "По умолчанию" в месте "C:\Users\Craig\AppData\Local\Temp\Temporary ASP.NET Файлы\корень\5d978e5b\ffc57fe1\сборка\DL3\2b1e5f8f\102c846e_9506ca01\XXXX.XXXX.Auditing.DLL. Тип B берется из 'XXXX.XXXX.Auditing, Version = 1.0.76.0, Культура = нейтральная, PublicKeyToken = null ' в контексте" LoadNeither "в местоположение 'F:\Visual Studio Проекты\XXXXXXXXX\источник\XXXX.XXXX.SilverlightClient.Web\Bin\XXXX.XXXX.Auditing.dll".
(XXXX.XXXX есть, чтобы затенять имя клиента)
Что дает?
Я задал здесь следующий вопрос:
Как я могу сериализовать некоторые простые данные аудита для хранения в таблице SQL?