基本示例:
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);
}
问题是如果我在不同的项目中创建相同的类(名称,字段),我就无法重建字节流。
有没有解决方案?
答案 0 :(得分:2)
将共享代码放在第三个项目中,然后在当前项目中引用该共享项目。
现在他们都可以访问课程,但不能访问任何你不想分享的内容。
您使用.net二进制序列化是否有特殊原因?
更现代的方法是使用像JSON这样的数据格式。
具体来说是JSON.Net。
它更加灵活,允许您反序列化到“看起来”相同的类,或者甚至使用字典或动态对象。
这是另一个SO答案,描述了为什么二进制格式化程序不是一个很好的选择:I hate to say it, but my first pointer here would be "don't do that"