0

如何在 F# 中序列化 None?以下代码引发System.ArgumentNullException: Object Graph cannot be null.错误:

let f = System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
let m = System.IO.MemoryStream()
f.Serialize (m, None)
4

2 回答 2

2

出于某些性能原因,编译器通常会将None = null. 我认为最好的解决方案是将整个东西包裹在一个额外的选项层中

像这样

let f = System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
let m = System.IO.MemoryStream()
f.Serialize (m,Some( None))

Some然后在反序列化时删除多余的

于 2012-09-17T12:14:58.873 回答
1

尝试使用不同的serializer,例如NetDataContractSerializer. 据我所知BinaryFormatter,这被认为是遗留问题,并且还有其他一些问题,例如this

于 2012-09-18T11:20:29.077 回答