【发布时间】:2017-01-08 21:51:42
【问题描述】:
我想对我的对象进行序列化并使用BinaryFormatter 类。
public static byte[] BinarySerialize(IMessage message)
{
using (var stream = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(stream, message);
return stream.ToArray();
}
}
但是当我运行代码时,会引发异常。
SerializationException:对象未标记为可序列化。
我认为这个异常是 BinaryFormatter 抛出的。
我不想将我的对象标记为[Serializable]。或者我的图书馆用户可能会忘记将自己的消息标记为[Serializable]。
有没有其他方法可以在不使用 [Serializable] 属性的情况下对我的对象进行二进制序列化?
【问题讨论】:
-
检查 Protobuf,不需要 Serializable 属性
-
var 结果 = BinarySerialize(JsonConvert.SerializeObject(message));
-
var bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));
-
经过两个序列化阶段?
-
如何反序列化?二进制反序列化返回命名空间和类信息的原始对象。但是 Json 反序列化只返回像这样的对象 {"id": "000"}
标签: c# .net serialization