在VB.NET中使用XMLSerializer序列化通用集合
问题描述:
为什么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是无法访问由于其保护级别,只有公共类型可以进行处理。” (“测试是应用程序的名称,”Module1“是模块的名称;这是一个控制台应用程序)
答
问题是您已经在Module Module1中包含类User,消息表明此模块的可访问性不公开,因为它嵌套在模块中,因此它的实际可访问性不公开,因为它嵌套在模块中。模块,它应该解决你的问题。
编辑
正如几个人指出的,最简单的方法是将User类放入它自己的文件中。
Yeap,它似乎对我也是。我的首选是将用户类放入其自己的文件中。 – RichardOD 2009-07-11 21:01:15