Als Erweiterung meines früheren Problems habe ich beschlossen, meine Konfigurationsdateiklasse (de) zu serialisieren, was hervorragend funktioniert hat.
Ich möchte jetzt ein assoziatives Array von Laufwerksbuchstaben speichern , zu kartieren (Schlüssel ist der Laufwerksbuchstabe, den Wert der Netzwerkpfad) und haben versucht , mit Dictionary
, HybridDictionary
und Hashtable
dafür , aber ich immer folgende Fehlermeldung erhalten , wenn Sie anrufen ConfigFile.Load()
oder ConfigFile.Save()
:
Es ist ein Fehler aufgetreten, der den Typ 'App.ConfigFile' widerspiegelt. [snip] System.NotSupportedException: Mitglied App.Configfile.mappedDrives kann nicht serialisiert werden [snip]
Nach dem, was ich gelesen habe, können Wörterbücher und HashTables serialisiert werden. Was mache ich also falsch?
[XmlRoot(ElementName="Config")]
public class ConfigFile
{
public String guiPath { get; set; }
public string configPath { get; set; }
public Dictionary<string, string> mappedDrives = new Dictionary<string, string>();
public Boolean Save(String filename)
{
using(var filestream = File.Open(filename, FileMode.OpenOrCreate,FileAccess.ReadWrite))
{
try
{
var serializer = new XmlSerializer(typeof(ConfigFile));
serializer.Serialize(filestream, this);
return true;
} catch(Exception e) {
MessageBox.Show(e.Message);
return false;
}
}
}
public void addDrive(string drvLetter, string path)
{
this.mappedDrives.Add(drvLetter, path);
}
public static ConfigFile Load(string filename)
{
using (var filestream = File.Open(filename, FileMode.Open, FileAccess.Read))
{
try
{
var serializer = new XmlSerializer(typeof(ConfigFile));
return (ConfigFile)serializer.Deserialize(filestream);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + ex.ToString());
return new ConfigFile();
}
}
}
}
DataContractSerializer
nur, ob die Klasse das kann. Nur die Ausgabe ist etwas hässlich.