Ich versuchte XML-Serialisierung das erste Mal. Der folgende Code funktioniert wie erwartet, aber ich möchte diese "copyFrom" -Methode nicht verwenden.XML-Deserialisierung in Klasse
Gibt es einen besseren Weg, die Speicher- und Lade-Methoden in der Klasse selbst zu halten?
namespace Test
{
[Serializable]
public class Settings
{
public struct Connection
{
[XmlAttribute ("user")]
public string sUser;
[XmlAttribute ("domain")]
public string sDomain;
}
public Connection connection;
public Settings()
{
connection.sUser = "";
connection.sDomain = "";
}
internal void loadFromFile()
{
if (File.Exists (Constants.STORAGE_SETTINGS_FILE))
{
using (FileStream filestream = new FileStream (Constants.STORAGE_SETTINGS_FILE, FileMode.Open, FileAccess.Read, FileShare.Read))
{
copyFrom ((Settings)new XmlSerializer (typeof (Settings)).Deserialize (filestream));
}
}
}
internal void saveToFile()
{
using (StreamWriter streamwriter = new StreamWriter (Constants.STORAGE_SETTINGS_FILE))
{
new XmlSerializer (typeof (Settings)).Serialize (streamwriter, this);
}
}
internal void copyFrom (Settings settings)
{
connection.sUser = settings.connection.sUser;
connection.sDomain = settings.connection.sDomain;
}
}
}
Ich verstehe nicht, was du meinst. Sie gehören zu der Klasse oder meinst du eine andere Klasse? –
Ich möchte die "copyFrom" vermeiden und die geladenen Werte direkt den Membervariablen zuweisen. –
Das serialize-Ergebnis gibt eine Klasse zurück und Sie benötigen entweder Code, um Eigenschaften in this.sUser und this.sDomain zu verschieben oder diese Variablen statisch zu machen. – jdweng