For many programmers, serialization is a topic that brings fear. Put those fears to rest in .NET. Serializaing objects is really quite simple. Lets jump right in and try to serialize this simple class:
| Public Class Article Public sTitle As String = String.Empty Public sAuthor As String = String.Empty Public sText As String = String.Empty End Class |
| Imports System.IO Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Formatters.Binary ... |
| <Serializable()> _ Public Class Article Implements ISerializable ... |
| Public Sub GetObjectData(ByVal info As SerializationInfo, _ ByVal context As StreamingContext) _ Implements ISerializable.GetObjectData info.AddValue("Title", Title) info.AddValue("Author", Author) info.AddValue("Text", Text) End Sub |
| Public Sub New(ByVal info As SerializationInfo, _ ByVal context As StreamingContext) Title = CStr(info.GetValue("Title", GetType(String))) Author = CStr(info.GetValue("Author", GetType(String))) Text = CStr(info.GetValue("Text", GetType(String))) End Sub Public Sub New() 'Empty Constructor End Sub |
| Public Sub Serialize(ByVal Filename As String) Dim s As Stream Try s = File.Open(Filename, FileMode.Create, FileAccess.ReadWrite) Dim b As New BinaryFormatter b.Serialize(s, Me) Finally s.Close() End Try End Sub |
| Public Shared Function Deserialize(ByVal Filename As String) As Article Dim s As Stream Try s = File.Open(Filename, FileMode.Open, FileAccess.Read) Dim b As New BinaryFormatter Return CType(b.Deserialize(s), Article) Finally s.Close() End Try End Function |
| Private CurrentArticle As Article ... If Me.OpenFileDialog1.ShowDialog = DialogResult.OK Then CurrentArticle = Article.Deserialize(Me.OpenFileDialog1.FileName) End If ... If Me.SaveFileDialog1.ShowDialog = DialogResult.OK Then CurrentArticle.Serialize(Me.SaveFileDialog1.FileName) End If |