Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过不同版本进行序列化_C#_Asp.net_Serialization_Casting_Deserialization - Fatal编程技术网

C# 通过不同版本进行序列化

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

我想序列化一个自定义类的对象,而不是在完成某些事情(例如解决方案重建)之后,反序列化给定的对象。 问题是,在重建之后,如果我尝试反序列化,就会抛出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'

这些是我的序列化/反序列化函数

    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;
    }
序列化对象存储在数据库中


当我尝试强制转换反序列化结果时,会引发异常。

请提供更多信息。如何序列化它?你把它存放在哪里?是的,对不起,我添加了新的信息。您需要其他序列化程序。我可以使用什么序列化程序?我是否理解正确,序列化和反序列化工作正常。只有在重建解决方案时,现有数据的反序列化才会失败。如果序列化新数据,是否再次反序列化该数据?