C# 通过不同版本进行序列化
我想序列化一个自定义类的对象,而不是在完成某些事情(例如解决方案重建)之后,反序列化给定的对象。 问题是,在重建之后,如果我尝试反序列化,就会抛出InvalidCastException 我认为这是因为在重建之后,序列化对象“属于”另一个程序集,这就是问题所在吗?我该如何解决 这是完全的例外 [A] 无法将UserWeb强制转换为[B]UserWeb。A型起源于 'App_Code.1us8pwe3,版本=0.0.0.0,区域性=中性, 位置处上下文“默认”中的PublicKeyToken=null 'C:\Users\David\AppData\Local\Temp\Temporary ASP.NET 文件\vs\7b743d5e\8394e6b3\App_Code.1us8pwe3.dll'。B型起源于 从'App_Code.nzoq2xtn,版本=0.0.0.0,文化=中性, 位置处上下文“默认”中的PublicKeyToken=null 'C:\Users\David\AppData\Local\Temp\Temporary ASP.NET 文件\vs\7b743d5e\8394e6b3\App_Code.nzoq2xtn.dll' 这些是我的序列化/反序列化函数C# 通过不同版本进行序列化,c#,asp.net,serialization,casting,deserialization,C#,Asp.net,Serialization,Casting,Deserialization,我想序列化一个自定义类的对象,而不是在完成某些事情(例如解决方案重建)之后,反序列化给定的对象。 问题是,在重建之后,如果我尝试反序列化,就会抛出InvalidCastException 我认为这是因为在重建之后,序列化对象“属于”另一个程序集,这就是问题所在吗?我该如何解决 这是完全的例外 [A] 无法将UserWeb强制转换为[B]UserWeb。A型起源于 'App_Code.1us8pwe3,版本=0.0.0.0,区域性=中性, 位置处上下文“默认”中的PublicKeyToken=nu
public static string Serialize(object obj)
{
BinaryFormatter bformatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
bformatter.Serialize(stream, obj);
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();
return text;
}
public static object Deserialize(string xml)
{
BinaryFormatter bformatter = new BinaryFormatter();
byte[] byteArray = Encoding.ASCII.GetBytes(xml);
MemoryStream stream = new MemoryStream(byteArray);
object obj = bformatter.Deserialize(stream);
stream.Close();
return obj;
}
序列化对象存储在数据库中
当我尝试强制转换反序列化结果时,会引发异常。请提供更多信息。如何序列化它?你把它存放在哪里?是的,对不起,我添加了新的信息。您需要其他序列化程序。我可以使用什么序列化程序?我是否理解正确,序列化和反序列化工作正常。只有在重建解决方案时,现有数据的反序列化才会失败。如果序列化新数据,是否再次反序列化该数据?