4
なぜXMLSerializerは汎用リストを処理しないのですか?VB.NETでXMLSerializerを使用して汎用コレクションをシリアライズ
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
私が言って、「薄暗いSER」のライン上の例外を取得「Testing.Module1は、その保護レベルにアクセスできません。唯一のパブリック型を処理することができます。」 ( "Testing"はアプリケーションの名前で、 "Module1"はモジュールの名前です;これはコンソールアプリケーションです)
それは私にもあるように見える。私の好みは、独自のファイルにユーザークラスを配置することです。 – RichardOD
私はリチャードに同意します。ネストされたクラスは避けなければなりません。他のクラスがそれを意識していないことが100%保証されている場合、経験則はネストしたり、クラスを隠すだけです。クラスをシリアライズしているので、他の場所で使用することを明示しています。実際には隠したくはありません。 – STW
フィードバックをいただきありがとうございます。これは私の問題を解決しました。 – DWRoelands