使用不同程序进行序列化c#

kad*_*dzu 2 .net c# serialization binaryformatter

我在2个不同的项目中有2个使用序列化的程序.程序1序列化和反序列化一个名为Quiz的类的数组.Both项目具有Quiz类.程序2仅反序列化程序1序列化的内容:

private void loadSerialize(object sender, EventArgs e)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        Stream stream = new System.IO.FileStream("DataFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
        Quiz[] obj = (Quiz[]) formatter.Deserialize(stream);
        for(int i = 0; i< obj.Length; i++)
        {
            quizes.Add(obj[i]);
        }
        stream.Close();
    }

    private void saveSerialize(object sender, FormClosedEventArgs e) {

        Quiz[] obj = quizes.ToArray();
        BinaryFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("DataFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
        formatter.Serialize(stream, obj);
        stream.Close();
    }
Run Code Online (Sandbox Code Playgroud)

两个程序都具有"loadSerialize"功能,而只有Program1具有"saveSerialize"功能.当我尝试在Program2中反序列化文件时,我得到一个serializationException.说(消息错误是葡萄牙语所以我把它翻译成英语):找不到程序集'infoAplicadaEnsino,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'.如何在Program2中反序列化?

小智 5

相同的类成员,名称和命名空间不足以使反序列化工作,程序集也必须匹配,这是如何BinaryFormatter设计的.您可以通过将Quiz类提取到单独的类库项目并通过两个程序项目引用新项目来解决此问题.