Класс Dictionary (Of TKey, TValue) фактически сериализуем, но в двоичном смысле. К сожалению, механизм XmlSerialization не может обрабатывать все, что реализует IDictionary, и именно это мешает ему работать в настройках приложения.
Что я обычно делаю, чтобы обойти это, так это создаю небольшой класс, который является XmlSerializable и представляет пару ключ / значение. Я думаю, что сериализовать коллекцию этих пар ключ / значение. Это легко конвертируется обратно в словарь (Of TKey, TValue) позже.
Например, если двумя элементами были Имя и Ученик
Public Class Pair
' Actual property implementation omited for brevity
Public Property Student As Student
Public Property Name As String
End Class
Затем я использую следующее для преобразования между массивом и словарем
Public Function ToArray(map As Dictionary(Of Name,Student)) As Pair()
Return map.Select(Function(x) New Pair(x.Key,x.Value).ToArray()
End Function
Public Function ToMap(arr As Pair()) As Dictionary(Of Name, Student)
return arr.ToDictionary(Function(x) x.Name, Function(y) y.Student)
End Function