Pourquoi XMLSerializer ne traitera-t-il pas ma liste générique?Sérialisation d'une collection générique avec XMLSerializer dans VB.NET
Sub Main()
Serializing()
End Sub
<System.Serializable()> _
Public Class User
Public Sub New()
End Sub
Public Sub New(ByVal Username As String, ByVal UserId As Integer)
Name = Username
ID = UserId
End Sub
Public Name As String
Public ID As Integer
End Class
Public Sub Serializing()
Dim Users As New List(Of User)
Dim u As New User
u.Name = "bob"
u.ID = 1
Users.Add(u)
u.Name = "bill"
u.ID = 2
Users.Add(u)
u.Name = "ted"
u.ID = 3
Users.Add(u)
Dim sw As New System.IO.StringWriter
Dim ser As New System.Xml.Serialization.XmlSerializer(GetType(List(Of User)))
ser.Serialize(sw, Users)
Debug.WriteLine(sw.ToString)
End Sub
je reçois une exception sur la ligne « Dim ser », en disant: « Testing.Module1 est inaccessible en raison de son niveau de protection. Seuls les types publics peuvent être traités. » ("Test est le nom de l'application et" Module1 "est le nom du module, il s'agit d'une application console.)
Yeap que cela semble être aussi pour moi. Ma préférence serait de mettre l'utilisateur Class dans son propre fichier. – RichardOD
Je suis d'accord avec Richard. Les classes imbriquées devraient normalement être évitées, la règle empirique est seulement d'imbriquer et/ou de cacher une classe s'il y a 100% de certitude qu'aucune autre classe ne devrait en être consciente. Puisque vous êtes en train de sérialiser la classe, il est clairement destiné à être utilisé ailleurs - donc vous ne voulez vraiment pas qu'il soit caché – STW
Merci pour les commentaires, tous. Cela a résolu mon problème. – DWRoelands