【发布时间】:2016-12-01 18:57:36
【问题描述】:
我正在尝试将以下类保存到 user.config,但我不确定我做错了什么。字典对象不允许类被序列化吗?
<Serializable()>Public Class RunInformation
Public ExecutablePath As String
<NonSerialized()> Public Settings As Dictionary(Of String, String)
<NonSerialized()> Public ProcessId As Integer
<NonSerialized()> Public Handle As IntPtr
<NonSerialized()> Public TabPageHandle As IntPtr
Public Sub New()
ExecutablePath = ""
Settings = New Dictionary(Of String, String)
End Sub
End Class
保存:
Private Sub Form1_Closing(sender As Object, e As EventArgs) Handles MyBase.Closing
my.Settings.Setting = New RunInformation()
My.Settings.Save()
End Sub
XML 文件:
<userSettings>
<BotManager.My.MySettings>
<setting name="Setting" serializeAs="Xml">
<value />
</setting>
</BotManager.My.MySettings>
</userSettings>
【问题讨论】:
-
当您打开设置 UI 编辑器时,没有列出字典,因为标准 XML 序列化程序无法使用它们。
-
我的设置是这样配置的:imgur.com/a/0PRco
-
不过,
RunInformation.Settings不是 XML 可序列化的,因为它是一个Dictionary<TK, TV> -
我知道字典没有实现 ISerialization 接口。我希望标记该属性 NonSerialized 将是一个修复。不是这样吗?
-
看来您只想保存
ExecutablePath?如果是这样,为什么不将其保存为字符串设置?
标签: vb.net dictionary settings serializable user.config