C#序列化/反序列化:同一个对象不同的项目

时间:2015-07-13 14:54:33

标签: c# serialization

基本示例:

Person person = new Person("Bob",50);
BinaryFormatter binaryFormatter = new BinaryFormatter();
MemoryStream memoryStream = new MemoryStream();
binaryFormatter.Serialize(memoryStream, person);

Byte[] data = memoryStream.ToArray();

MemoryStream received = new MemoryStream(data,false);

object obj = binaryFormatter.Deserialize(received);

if (obj is Person)
{
    Person des = obj as Person;

    Console.WriteLine("{0} {1}", des.Name, des.Age);
}

问题是如果我在不同的项目中创建相同的类(名称,字段),我就无法重建字节流。

有没有解决方案?

1 个答案:

答案 0 :(得分:2)

将共享代码放在第三个项目中,然后在当前项目中引用该共享项目。

现在他们都可以访问课程,但不能访问任何你不想分享的内容。

您使用.net二进制序列化是否有特殊原因?

更现代的方法是使用像JSON这样的数据格式。

具体来说是JSON.Net

它更加灵活,允许您反序列化到“看起来”相同的类,或者甚至使用字典或动态对象。

这是另一个SO答案,描述了为什么二进制格式化程序不是一个很好的选择:I hate to say it, but my first pointer here would be "don't do that"