Ich habe eine Klasse Class_serialize erstellt, die ihre Instanzvariablen
aus/in eine XML-Datei serialisieren soll. Um ihre eigene Instanz zu
referenzieren, gibts ja die this-Referenz.
Dummerweise kann man von this nur lesen, aber nicht schreiben. Um also
von der angegebenen Datei einzulesen verwende ich daher folgenden
funktionierenden Code:
1 | [Serializable]
|
2 | public class Class_serialize
|
3 | {
|
4 | //Variablen
|
5 | public string str = "Testinhalt der XML-Datei";
|
6 |
|
7 | //Funktionen
|
8 | public bool OpenProject(Class_serialize obj)
|
9 | {
|
10 | Stream myStream;
|
11 | OpenFileDialog openFileDialog1 = new OpenFileDialog();
|
12 | openFileDialog1.Filter = "Projectfiles (*.prj)|*.prj";
|
13 | openFileDialog1.AddExtension = true;
|
14 | openFileDialog1.CheckFileExists = true;
|
15 | openFileDialog1.Title = "Open Projectfile";
|
16 |
|
17 | if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
18 | {
|
19 | try
|
20 | {
|
21 | if ((myStream = openFileDialog1.OpenFile()) != null)
|
22 | {
|
23 | XmlSerializer ser = new
|
24 | XmlSerializer(typeof(Class_serialize));
|
25 | TextReader reader = new
|
26 | StreamReader(openFileDialog1.FileName);
|
27 | /* *********** DAS HIER MEIN ICH *************/
|
28 | Class_serialize ich = this;
|
29 | ich=(Class_serialize)ser.Deserialize(reader);
|
30 | /* /********** DAS HIER MEIN ICH *************/
|
31 | reader.Close();
|
32 | myStream.Close();
|
33 | return (true);
|
34 | }
|
35 | }
|
36 | catch
|
37 | {
|
38 | MessageBox.Show("Error while reading file");
|
39 | }
|
40 | }
|
41 | return (false);
|
42 | }
|
Ist das der einzigste Weg oder macht man das eigentlich anders==besser?