【问题标题】:Dictionary in Settings throws an exception?设置中的字典抛出异常?
【发布时间】:2015-05-14 06:02:09
【问题描述】:

我想在我的项目的默认 UserSettings 类中保存一个字典。

我在设置文件的代码中尝试了以下操作,但失败了:

<Setting Name="MediaKeys" Type="System.Collections.ObjectModel.Dictionary&lt;System.Input.Key, System.IO.FileInfo&gt;" Scope="User">
  <Value Profile="(Default)" />
</Setting>

当我查看设置的 UI 时收到此错误消息:

无法加载文件或程序集“System.IO.FileInfo>”或其其中之一 依赖项。参数不正确。 (HRESULT 的例外情况: 0x80070057 (E_INVALIDARG))

请记住,我将在另一个时间点处理整个可序列化字典,为什么会出现这个异常?即使是不可序列化的对象(比如我测试过的 FileInfo)也不会抛出这个异常。

【问题讨论】:

    标签: c# exception dictionary settings


    【解决方案1】:

    .NET 设置不能很好地处理泛型。我就是这样做的:

    [XmlRoot("dictionary")]
    public class MyDictionary : SerializableDictionary<int, string>
    {
    }
    

    【讨论】:

    • 这不是一个可行的解决方案。设置类包含许多设置对象。还;我在 ObservableCollections 方面取得了成功。 XML字符串中的“,”字符是否可能需要转义? (这是我最初的怀疑,但我无法弄清楚如何在 XML 字符串中转义逗号)
    • @Will 我认为这是最好的选择,但您可以尝试将其混搭。见here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2018-04-19
    • 2013-05-24
    相关资源
    最近更新 更多