Нет, в вашем случае вы хотите использовать функцию Load be Shared, которая возвращает вновь созданный элемент.
Больше похоже на:
Public Class Foo
public var as string
public Shared Function Load(byval filename as string) As Foo
'This is done
[...]
oItem = [...] 'Code to deserialize
Return oItem
end sub
end class
Public Sub Main
Dim f as Foo
f = Foo.load("myFile")
end sub
Кроме того, вместо встраиваниядесериализация непосредственно в каждом классе, вы можете иметь метод общего назначения, такой как:
''' <summary>
''' This method is used to deserialize an object from a file that was serialized using the SoapFormatter
''' </summary>
''' <param name="sFileName"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Deserialize(Of T)(ByVal sFileName As String) As T
' Exceptions are handled by the caller
Using oStream As Stream = File.Open(sFileName, FileMode.Open, IO.FileAccess.Read)
If oStream IsNot Nothing Then
Return DirectCast((New SoapFormatter).Deserialize(oStream), T)
End If
End Using
Return Nothing
End Function
, который затем можно вызвать как:
Public Sub Main
Dim f as Foo
f = Deserialize(Of Foo)("myFile")
end sub