我需要使用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; } }
}
}
答案 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;
}