[英]Does Mono support StringCollections in user settings?
我一直在研究当前包含System.Collections.Specialized.StringCollection
用户设置的 Winforms 应用程序。 在 Windows 上,此代码用于更新和保存设置:
private void UpdateDirList() {
Properties.Settings.Default.SearchDirs.Clear();
Properties.Settings.Default.SearchDirs.AddRange(_searchDirs.ToArray());
Properties.Settings.Default.Save();
}
Windows 机器上 user.config 的相关摘录:
<setting name="SearchDirs" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>C:\projects\a</string>
<string>C:\projects\b</string>
</ArrayOfString>
</value>
</setting>
当尝试在 Mono 下运行相同的应用程序时, <ArrayOfString>
元素丢失,即使我已经验证Properties.Settings.Default.SearchDirs
对象确实包含路径:
<setting name="SearchDirs" serializeAs="Xml">
<value />
</setting>
Mono 不支持 StringCollection 吗? 我使用它不正确吗?
嗯,我曾经用 C# 为 Mono/Linux 和 Windows 工作过。 它并不总是一样的!
我想知道你为什么要使用 ToArray() - 需要吗? 而不是 ToList()? 它有效吗? List 是恕我直言今天首选,它可以用作 IEnumerable 和 IList 等......
有时需要一种解决方法 - 目录可以很容易地写成一个字符串,用例如“|”分隔 - 这是路径中不允许的字符 - 无论是在 Linux 还是 Windows 中。
var searchDirsCsv = string.Join("|", _searchDirs);
_searchDirs = searchDirsCsv.Split('|);
你怎么认为?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.