【问题标题】:VB.net Serialization IssueVB.net 序列化问题
【发布时间】: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&lt;TK, TV&gt;
  • 我知道字典没有实现 ISerialization 接口。我希望标记该属性 NonSerialized 将是一个修复。不是这样吗?
  • 看来您只想保存ExecutablePath?如果是这样,为什么不将其保存为字符串设置?

标签: vb.net dictionary settings serializable user.config


【解决方案1】:

问题是您将信息序列化为 XML 但使用二进制序列化控件属性。

改用属性System.Xml.Serialization.XmlIgnore

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多