gpt4 book ai didi

vb.net - 在 VB.NET 中使用 XMLSerializer 序列化泛型集合

转载 作者:行者123 更新时间:2023-12-01 00:06:41 26 4
gpt4 key购买 nike

为什么 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

我在“Dim ser”行出现异常,说“Testing.Module1 由于其保护级别而无法访问。只能处理公共(public)类型。” (“Testing 是应用程序的名称,“Module1”是模块的名称;这是一个控制台应用程序)。

最佳答案

问题是您已在 Module Module1 中包含类 User。错误消息表明此模块的可访问性不是公开的。因此,用户的实际可访问性也不公开,因为它嵌套在模块中。

将外部模块的定义更改为 Public 或将 Class User 移到模块之外,它应该可以解决您的问题。

编辑

正如一些人指出的那样,实现这一点的最简洁方法是将 User 类放入它自己的文件中。

关于vb.net - 在 VB.NET 中使用 XMLSerializer 序列化泛型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1114550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com