【发布时间】: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 aDictionary(Of String, String)。 -
查看输出窗口或使用调试 > 异常 > 勾选 CLR 异常。您看到的 FileNotFoundException 是正常的。 InvalidOperationException 不是,StringDictionary 是不可序列化的。通用字典也不是。 XML 序列化只是相当蹩脚。
-
@JamesThorpe 在使用 VB.NET 设置时,它是 what you get。有“浏览...”,但您无法浏览泛型类型。
-
如果您将该代码放在其他位置,例如单击按钮,您将获得
ConfigurationException: Configuration system failed to initialize。设置最适用于简单类型,您不能向其添加任何类型,尤其是字典。创建一个合理的类型并自己序列化它。
标签: vb.net