我能够结交Settings.settings
朋友List<string>
<Setting Name="qq" Type="System.Collections.Generic.List<System.String>" Scope="User">
真的可以用数组键+值来做到这一点吗?试过了SortedDictionary
<Setting Name="ww" Type="System.Collections.Generic.SortedDictionary<System.String,System.String>" Scope="User">
它甚至奏效了..有一段时间。重新启动应用程序后,一切都被重置(当然,我在关闭之前保存了所有内容),并且在文件中user.config
它看起来像这样
<setting name="ww" serializeAs="Xml">
<value />
</setting>
此外,“属性”窗口未打开 - 参数,出现“发现无法理解的字符”之类的错误。很明显,他在逗号处发誓
System.Collections.Generic.SortedDictionary<System.String,System.String>
是否真的可以存储键 + 值数组,还是更容易编写自己的实现?
你当然可以,但需要一些咒语。
对于初学者,它们
Settings
由 XML 序列化程序序列化。因此,开箱即用地保存 XML 序列化程序不能做的事情是非常容易的,它不会工作。特别是字典。尝试运行代码
- 你会得到一个例外:
The type SortedDictionary`2[System.String, System.String] is not supported because it implements IDictionary.
因此,您必须编写一个将数据存储在“平面”列表中的包装器,并能够从中构造所需的单词。
接下来,我们需要一个技巧来让它起飞。输入一个
Settings
名为 的非编码(例如,字符串)类型的值DictWrapper
,关闭 Studio,然后编辑该属性的定义,Settings.settings
如下所示:(请参阅下面的如何获得可怕的价值
Value
。)接下来,编辑 and
Settings.Designer.cs
,将属性定义替换为:你可以使用:
为了不“手动”键入序列化值的文本表示,您可以使用准备代码。例如,这里是代码
在变量中产生一个
result
值你所要做的就是双引号。
要转义符号
<
/>
,您可以使用例如以下代码:事实证明: