mikrocontroller.net

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


Autor: beta-frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
[Serializable]
public class Class_serialize
{
    //Variablen
    public string str = "Testinhalt der XML-Datei";

    //Funktionen
    public bool OpenProject(Class_serialize obj)
    {
        Stream myStream;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.Filter = "Projectfiles (*.prj)|*.prj";
        openFileDialog1.AddExtension = true;
        openFileDialog1.CheckFileExists = true;
        openFileDialog1.Title = "Open Projectfile";

        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialog1.OpenFile()) != null)
                {
                    XmlSerializer ser = new
XmlSerializer(typeof(Class_serialize));
                    TextReader reader = new
StreamReader(openFileDialog1.FileName);
    /* *********** DAS HIER MEIN ICH *************/
                    Class_serialize ich = this;
                    ich=(Class_serialize)ser.Deserialize(reader);
    /* /********** DAS HIER MEIN ICH *************/
                    reader.Close();
                    myStream.Close();
                    return (true);
                }
            }
            catch
            {
                MessageBox.Show("Error while reading file");
            }
        }
        return (false);
    }
Ist das der einzigste Weg oder macht man das eigentlich anders==besser?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.