De \ Serialization两个不同的类

时间:2013-12-30 22:33:11

标签: c# serialization

我需要使用BinaryFormatter在一个文件中序列化两个不同的类,此时我可以序列化一个,所有类都有[serializable]只需要理解如何“合并”那些类

我只需要在同一个文件中序列化agência和autocarro ......

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace EDJD_AgênciaViagens
{    
class Dados
{
    private static Agência agência = new Agência("Agência IPCA", "Barcelos");
    // por motivos de erro 
    // criei nova entrada para autocarros        
    private static Autocarro autocarro = new Autocarro("IPCA", "Barcelos");

    public static Agência dados
    { get { return agência; } }
    //entrada para autocarros independete das viagens
    public static Autocarro auto
    { get { return autocarro; } }       

}
}

1 个答案:

答案 0 :(得分:3)

定义一个新类,将2个类聚合为属性。现在序列化这个新类:

[Serializable]
public class MyModel
{
    public Class1 Class1 { get; set }
    public Class2 Class2 { get; set }
}

你去,现在序列化一个MyModel的实例,它将包含其他2个类,你将获得所有必要的信息:

// get instances of your classes
Class1 class1 = ... get your instance of class1
Class2 class2 = ... get your instance of class2

// now build the new class
MyModel model = new MyModel();
model.Class1 = class1;
model.Class2 = class2;

// and then serialize the new model
using (var stream = File.Create("data.bin"))
{
    var serializer = new BinaryFormatter();
    serializer.Serialize(stream, model);
}

以后你想反序列化这个类:

using (var stream = File.Create("data.bin"))
{
    var serializer = new BinaryFormatter();
    MyModel model = (MyModel)serializer.Serialize(stream);

    Class1 class1 = model.Class1;
    Class2 class2 = model.Class2;
}