Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 29.12.16 21:39 
Hallo Forum,
ich bin gerade dabei, ein kleines Programm zu schreiben. Dafür habe ich drei Klassen.

Klasse 1: enthält alle wichtigen Eigenschaften (fast nur Strings)
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
 public class IdeenProperties
    {
        public string Ideenname { get; set; }
        public string Ideenbeschreibung { get; set; }
        public int Priorität { get; set; }
    }


Klasse 2: enthält eine Liste vom Typ der Klasse 1 und Methoden, die diese Liste speichern und öffnen
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
public class IdeenSerialisation
    {
        public List<IdeenProperties> IdeenProperties { get; set; }
        public IdeenSerialisation()
        {
            IdeenProperties = new List<Entwicklertool.IdeenProperties>();
        }

        public void Speichern(string Pfad)
        {
            try
            {
                using (FileStream file = new FileStream(Pfad, FileMode.Create))
                {
                    XmlSerializer xml = new XmlSerializer(typeof(IdeenSerialisation));
                    xml.Serialize(file, this);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public static IdeenSerialisation Laden(string Pfad)
        {
            try
            {
                using (FileStream file = new FileStream(Pfad, FileMode.Open))
                {
                    XmlSerializer xml = new XmlSerializer(typeof(IdeenSerialisation));
                    return (IdeenSerialisation)xml.Deserialize(file);
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
        }
    }

Klasse 3: hier kann der Benutzer verschiedene Daten angeben. Als erstes wird ein Objekt von IdeenSerialisation erstellt und im Konstruktor wird dann diesem Objekt ein Wert hinzugefügt durch die Methode Öffnen. Wenn das Objekt leer ist, also wenn keine XML Datei existiert, dann wird einfach ein neues Objekt instantiert.
So, wenn ich jetzt dieser Liste ein neues Objekt mit zugebe und dann die Speichern Methode ausführe, passiert nichts, die XML Datei sieht dann so aus:

ausblenden XML-Daten
1:
2:
3:
4:
<?xml version="1.0"?>
<IdeenSerialisation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IdeenProperties />
</IdeenSerialisation>


Woran kann das liegen?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 29.12.16 22:04 
Zeig bitte auch die relevanten Teile von Klasse 3.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 29.12.16 22:08 
Ah okay, sorry:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
ublic partial class Ideen : UserControl
    {
        IdeenSerialisation _ideen { get; set; }
        public Ideen()
        {
            InitializeComponent();
            AddItems();
        }

        private void AddItems()
        {
            try
            {
                _ideen = IdeenSerialisation.Laden(Path.Combine(Datenfunktionen.ProjektPfad, "ideas.xml"));        //Pfad der Datei
                int CurrentPosition = 0;

                if (_ideen != null)
                {
                   // ....
                }
                else
                {
                    _ideen = new IdeenSerialisation();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void pictureButton1__click()
        {
                int i = 0;
                IdeenProperties prop = new IdeenProperties()
                {
                    Ideenbeschreibung = this.textBox1.Text,
                    Ideenname = this.textBox2.Text,
                    Priorität = i
                };
                // Idee hinzufügen
                _ideen.IdeenProperties.Add(prop);
                IdeenSerialisation ser = new IdeenSerialisation();
                ser.Speichern(Path.Combine(Datenfunktionen.ProjektPfad, "ideas.xml"));
        }
    }

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Do 29.12.16 22:37 
Moin,

Es könnte helfen, der IdeenSerialisation die sog. IdeenProperties die du vorher mühsam erstellt hast, auch zuzuweisen. Du hast ja nun extra dafür die Property IdeenProperties in deiner Serialisierungsklasse vorgesehen, die müsste man dann entsprechend nutzen. Nur weil die beiden Variablen zufällig gleich heißen, sind sie ja noch lange nicht identisch :idea:.

Gruß
Finn
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 29.12.16 23:40 
Wie genau soll ich das verweisen?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 29.12.16 23:55 
Willst Du uns verarschen? Entschuldige die Wortwahl, aber anders kann ich das echt nicht mehr fragen. Nach Über 600 Beiträgen in diesem Forum fragst Du, wie man eine Zuweisung an ein Feld macht?

Ich lege Dir ganz, ganz dringend nahe, Grundlagen zu lernen und nicht nur immer Programme zusammen zu stoppeln, ohne zu verstehen, was dort eigentlich passiert. Ich werde mir das nicht mehr lange angucken, denn Deine Weigerung selbstständig zu lernen, verprellt langsam andere Benutzer.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Fr 30.12.16 00:08 
Sorry, ich habe jetzt die ganze Zeit den Fehler gesucht, der so offensichtlich war. Jetzt funktionierts, aber trotzdem danke

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein