Ich habe ein Config-Objekt, das ich in XML serialisiere, damit ich es später wieder laden kann. In meinem Konfigurationsobjekt habe ich ein WörterbuchXML-Deserialisierung von Listen
public Dictionary<int, FooConfiguration> Foos
{
get { return foos; }
set
{
if (foos != value)
{
foos = value;
OnPropertyChanged(() => foos);
}
}
}
Objekte Wenn ich es bin Serialisierung scheint nicht Serialisierung Wörterbücher zu mögen, die ich verstehen kann, sie komplizierte Objekte sind. Als Workaround dachte ich, dass ich die Eigenschaft mit dekorieren und eine Liste meiner Objekte erstellen würde, die die Werte aus dem Wörterbuch erhalten würden.
public List<FooConfiguration> FooConfigurations
{
get { return Foos.Values.ToList(); }
set
{
int fooNumber = 0;
foreach (var fooConfiguration in value)
{
foos.Add(fooNumber++, fooConfiguration);
}
}
}
Dies funktionierte so weit wie Serialisierung geht. Ich konnte diese Objekte jetzt in meinem XML sehen. Das Problem ist, dass es niemals den Setter traf. Warum könnte eine Liste serialisiert, aber nicht deserialisiert werden?
Ich habe schließlich behoben, indem Sie eine FooConfiguration[]
anstelle einer Liste, aber das scheint ein bisschen komisch, wenn Sie mich fragen.
Wie Sie sehen können, habe ich eine Lösung, ich möchte nur wirklich verstehen, warum es tut, was es besser macht.
Mögliche Duplikate von [Wie XML-Serialisierung eines Wörterbuchs] (http://stackoverflow.com/questions/3671259/how-to-xml-serialize-a-dictionary) –
@JakubJankowski Danke dafür, Das ist ziemlich eine naheliegende Möglichkeit, ein Wörterbuch zu serialisieren und meiner Lösung ziemlich ähnlich zu sein. Während meine Hauptfrage ist, dass die Liste nicht deserialisiert wird, glaube ich nicht, dass es ein Duplikat ist. Vielleicht sollte ich den Titel ändern? – Keithin8a
Verwenden Sie ein Array 'FooConfiguration []' anstelle einer 'List' für Ihre Ersatzeigenschaft. Eine Erklärung dafür finden Sie unter [XML-Deserializer kann nicht in eine Liste deserialisiert werden] (https://stackoverflow.com/questions/26179792/cannot-deserialize-xml-into-a-list-using-xml-deserializer/26624551# 26624551) –
dbc