Forum: PC-Programmierung .NET und this "dereferenzieren"


von beta-frank (Gast)


Lesenswert?

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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.