2015-05-13 2 views
0

Я хочу сохранить словарь в классе UserSettings по умолчанию моего проекта.Словарь в настройках генерирует исключение?

Я попытался следующие в коде файла настроек, но он не:

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

Я получаю сообщение об ошибке, когда я смотрю на интерфейс для настройки:

Могли не загружать файл или сборку «System.IO.FileInfo>» или одну из его зависимостей . Неверный параметр. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG))

Принимая во внимание, пожалуйста, что я буду иметь дело со всей сериализуемого словарь в другой момент времени, почему я получаю это исключение? Даже несериализуемые объекты (такие как FileInfo, как я уже протестировал) не выбрасывают это исключение.

ответ

1

Настройки .NET не очень хорошо обрабатывают дженерики. Это то, что я делаю:

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

Это нежизнеспособное решение. Класс настроек содержит множество объектов настроек. Также; У меня есть успех с ObservableCollections. Возможно ли, что символ «,» в строке XML должен быть экранирован? (Это мое первоначальное подозрение, но я не смог понять, как избежать запятой в XML-строке) – Will

+0

@ Я думаю, что это лучший вариант, но вы можете попытаться уничтожить его. См. [Здесь] (http://stackoverflow.com/a/4046036/3980331). – Zer0

+1

& # x002C; Это именно то, что мне нужно; Благодарю. – Will

Смежные вопросы