我想序列化我的VB解決方案中的主類。我已經添加了Serializable屬性在我班上的第一名,像這樣:VB.NET序列化錯誤
<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
當我把這個方法我越來越錯誤:
Type 'System.Windows.Forms.Form' in Assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.
我猜這是因爲你不能序列附加到類或某事的形式,但我真的不知道我在做什麼。
是否可以序列化包含在我的Form1類中的所有對象,而不會收到此錯誤?我不想存儲任何關於表單控件的數據,我只需要保存Form1
類頂部定義的所有對象。
感謝您的任何幫助。
謝謝,這解釋了錯誤。問題是我在Form1類中有很多這樣的對象(據我所知,它們都是可序列化的),我希望避免顯式序列化每一個對象。如果我將我想要堅持的對象移動到一個單獨的類中,那會起作用嗎?否則,你能否解釋爲什麼我需要按同樣的順序進行反序列化?乾杯 – Flash 2011-04-05 09:28:56
@安德魯:是的,把他們放在一個單獨的班級應該工作。你需要把這個類標記爲''。無論如何,將用戶界面(Form1)和數據(您的新類)分開是一種很好的做法。 –
Heinzi
2011-04-05 11:22:26
@Andrew:你需要以相同的順序反序列化它們,因爲你的文件流將包含'bytesForObject1 bytesForObject2 ...',並且重建'bytesForObject1'中的一個object2將不起作用。 ;-) – Heinzi 2011-04-05 11:23:49