【问题标题】:VB.NET StringDictionary wont save as settingVB.NET StringDictionary 不会保存为设置
【发布时间】:2015-12-17 03:31:20
【问题描述】:

我创建了一个名为 TheList 的新用户设置作为 System.Collections.Specialized.StringDictionary

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    If My.Settings.TheList Is Nothing Then
        My.Settings.TheList = New System.Collections.Specialized.StringDictionary
    End If

    My.Settings.TheList.Add("Not", "Working")
    My.Settings.Save()
End Sub

但是,由于某种原因,My.Settings.TheList 实际上总是“无”,我的字典条目从未保存。

【问题讨论】:

  • FWIW, StringDictionary 是一种相当早的(在 .NET 术语中)这样做的方式 - 因为泛型已经存在,所以它将是 more normal to use a Dictionary(Of String, String)
  • 查看输出窗口或使用调试 > 异常 > 勾选 CLR 异常。您看到的 FileNotFoundException 是正常的。 InvalidOperationException 不是,StringDictionary 是不可序列化的。通用字典也不是。 XML 序列化只是相当蹩脚。
  • @JamesThorpe 在使用 VB.NET 设置时,它是 what you get。有“浏览...”,但您无法浏览泛型类型。
  • 如果您将该代码放在其他位置,例如单击按钮,您将获得ConfigurationException: Configuration system failed to initialize。设置最适用于简单类型,您不能向其添加任何类型,尤其是字典。创建一个合理的类型并自己序列化它。

标签: vb.net


【解决方案1】:

事实证明,不支持保存字典。相反,我决定使用this answer 中的代码自行序列化它。像梦一样工作。

【讨论】:

    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2012-01-21
    • 2013-09-28
    • 1970-01-01
    相关资源
    最近更新 更多