This is what I try to achieve:
*serialize a class to a binary file
*get a BindingList(of class) or List(of class) from the binary file
*display the list in a DataGridView

I get InvalidCastException when I try to get info from the file.

My class:

Imports System.ComponentModel
Imports System.IO
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Net.Mail
<Serializable()>
Public Class Server
    Private _nume As String
    Private _adresa As String
    Private _port As String
    Private _encryption As String
    Private _username As String
    Private _password As String
    Public Property Nume As String
        Get
            Return _nume
        End Get
        Set(ByVal value As String)
            _nume = value
        End Set
    End Property
    Public Property Adresa As String
        Get
            Return _adresa
        End Get
        Set(ByVal value As String)
            _adresa = value
        End Set
    End Property
    Public Property Port As String
        Get
            Return _port
        End Get
        Set(ByVal value As String)
            _port = value
        End Set
    End Property
    Public Property Encryption As String
        Get
            Return _encryption
        End Get
        Set(ByVal value As String)
            _encryption = value
        End Set
    End Property
    Public Property Username As String
        Get
            Return _username
        End Get
        Set(ByVal value As String)
            _username = value
        End Set
    End Property
    Public Property Password As String
        Get
            Return _password
        End Get
        Set(ByVal value As String)
            _password = value
        End Set
    End Property

    Public Sub New()

    End Sub

    Public Sub New(ByVal nume As String, ByVal adresa As String, ByVal port As String, _
                   ByVal encryption As String, ByVal username As String, ByVal password As String)
        _nume = nume
        _adresa = adresa
        _port = port
        _encryption = encryption
        _username = username
        _password = password
    End Sub

End Class

How I serialize:
*declare an object of class and apped values to eacy member then serialize it

How I deserialize:
ex:

Dim list as new BindingList(Of myclass)
'go to file, open it
list = formatter.Deserialize(filestream) 'and this is the line where it gives me the exception

Edited 3 Years Ago by ogrishmania

What is the error message in the InvalidCastException?

It looks like the problem is you're not deserializing to your serializable object; formatter doesn't know how to make a list. I think you'll have to deserialize to your Server class directly, and create the list yourself.

This article has been dead for over six months. Start a new discussion instead.