繁体   English   中英

Mono 是否支持用户设置中的 StringCollections?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM