以下是序列化对象的代码。我需要这个来序列化一个Form并将其保存在我的应用程序的配置中。
我设置了断点并注意到它返回Nothing或Null(下面的代码中的第3行)
Public Function SerializeObject(ByVal o As Object) As String
If Not o.GetType().IsSerializable Then
Return Nothing
End If
Using stream As New MemoryStream()
Dim ser As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
ser.Serialize(stream, o)
MessageBox.Show(Convert.ToBase64String(stream.ToArray))
Return Convert.ToBase64String(stream.ToArray)
End Using
End Function
如果有其他选择,我很想知道更多。
答案 0 :(得分:1)
.NET中的表单不是可序列化的,因为它们拥有Window的句柄。此句柄仅在此处有效(在此计算机上的此会话中),现在(如果您在十分钟内关闭应用程序,则句柄将不再有效)。
因此句柄无法序列化,也无法形成。
解决这个问题的想法是: