VB.NET序列化错误

我正在尝试在VB解决方案中序列化主类。我在我的类顶部添加了Serializable属性,如下所示:
<Serializable()>
Public Class Form1
我正在使用以下代码来序列化:
Public Sub serializeThis()
    Dim fStream As FileStream
    Try
        fStream = New FileStream("C:ObjectData.bin", FileMode.Create)
        Dim bfmtr As New BinaryFormatter
        bfmtr.Serialize(fStream, Me)
        fStream.Close()
    Catch ex As Exception
        MsgBox("Failed to serialize: " & ex.Message)
        Throw
    End Try
End Sub
当我调用此方法时,我收到错误:   在Assembly'System.Windows.Forms中输入'System.Windows.Forms.Form',   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'   未标记为可序列化。 我猜这是因为你不能序列化附加到类或其他东西的表单,但我真的不知道我在做什么。 我可以以某种方式序列化我的Form1类中包含的所有对象,而不会出现此错误吗?我不想存储有关表单控件的任何数据,我只需要保存我在
Form1
类顶部定义的所有对象。 谢谢你的帮助。     
已邀请:
由于
Form
不可序列化,因此无法序列化表单本身。 (表格不附在你的
Form1
课程上。你的
Form1
课程是表格,因为它来自
System.Windows.Forms.Form
。) 但是,您可以执行的操作是仅序列化要序列化的对象:
Public Sub SerializeThis()
    Dim fStream As FileStream
    Try
        fStream = New FileStream("C:ObjectData.bin", FileMode.Create)
        Dim bfmtr As New BinaryFormatter()

        bfmtr.Serialize(fStream, object1)
        bfmtr.Serialize(fStream, object2)
        bfmtr.Serialize(fStream, object3)
        ' ...

        fStream.Close()
    Catch ex As Exception
        MsgBox("Failed to serialize: " & ex.Message)
        Throw
    End Try
End Sub
有两点需要注意: 要序列化的所有对象的类(object1,object2,...)必须标记为
<Serializable()>
。您可以在文档中进行检查(示例:Hashtable标记为可序列化)。 请确保以相同的顺序反序列化对象。     

要回复问题请先登录注册