DWR*_*nds 4 vb.net generics xml-serialization
为什么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
Run Code Online (Sandbox Code Playgroud)
我在"Dim ser"行上得到一个例外,说"由于其保护级别,Testing.Module1无法访问.只能处理公共类型." ("Testing是应用程序的名称,"Module1"是模块的名称;这是一个控制台应用程序).
问题是您已在Module Module1中包含类User.该错误消息表明此模块的可访问性不公开.因此,User的实际可访问性不是公共的,因为它嵌套在Module中.
将外部模块的定义更改为公共或将类用户移动到模块外部,它应该可以解决您的问题.
编辑
正如几位人士指出的那样,实现这一目标的最简单方法是将User类放入其自己的文件中.
| 归档时间: |
|
| 查看次数: |
16803 次 |
| 最近记录: |