Memperluas masalah saya sebelumnya , saya telah memutuskan (de) membuat serial file kelas config saya yang bekerja sangat baik.
Sekarang saya ingin menyimpan array asosiatif huruf drive untuk memetakan (key adalah huruf drive, nilai adalah jalur jaringan) dan telah mencoba menggunakan Dictionary
, HybridDictionary
dan Hashtable
untuk ini, tetapi saya selalu mendapatkan error berikut saat memanggil ConfigFile.Load()
atau ConfigFile.Save()
:
Ada kesalahan yang mencerminkan tipe 'App.ConfigFile'. [snip] System.NotSupportedException: Tidak dapat membuat serialisasi anggota App.Configfile.mappedDrives [snip]
Dari apa yang saya baca Kamus dan HashTable dapat diserialisasi, jadi apa yang saya lakukan salah?
[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
kelas bisa melakukannya. Hanya hasilnya agak jelek.