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();
}

user.config 在 Windows 机器上的相关摘录:

<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 等。...

有时需要一种解决方法 - 目录可以很容易地写成一个字符串, 以e分隔。 G。 '|' - 这是路径中不允许的字符 - Linux 和 Windows.

中均不允许
var searchDirsCsv = string.Join("|", _searchDirs);
_searchDirs = searchDirsCsv.Split('|);

你怎么看?