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: Fr 27.05.16 17:45 
Hallo,
also ich habe eine Klasse wie z.b.
ausblenden C#-Quelltext
1:
2:
public string Name {get; set;}
public string Vorname{get; set;}


Wenn ich diese Version der Anwendung veröffentliche, der Kunde so einige Xml-Dateien erstellt und diese Daten in eine ListView eingespeist werden und ich ein neues Update herausbringe, wo ich der Klasse noch public int Alter {get; set;} hinzufüge. Bleiben dann alle Daten erhalten, oder wie verhält sich der XmlSerializer darauf?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4434
Erhaltene Danke: 909


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 27.05.16 17:57 
Das mag jetzt wenig hilfreich klingen aber das hast du in ein paar Minuten ausprobiert. Die Erfahrung gemacht zu haben ist wesentlich hilfreicher als wenn wir dir das erzählen.
Danach können wir ja überlegen wie man damit umgeht.
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 27.05.16 18:33 
Also ich habe es jetzt mal versucht. Die Frage kommt eigentlich daher, dass ich in einem Update die Finanzfunktion noch verbessern muss, in dem ich der Klasse noch weitere Felder hinzufüge. Hier mal ein XML-Beispiel:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<?xml version="1.0"?>
<IO_Klasse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <_klasse>
    <Klasse>
      <Name>Hallo</Name>
      <Vorname>Test</Vorname>
      <Alter />
    </Klasse>
    <Klasse>
      <Name>Hallo</Name>
      <Vorname>Test</Vorname>
      <Alter>12</Alter>
    </Klasse>
  </_klasse>
</IO_Klasse>


So. Was meint ihr, wenn ich beispielsweise mit der Finanzklasse, die sich im Update ändert, Berechnungen durchführe, dürfte sich ja eigentlich kein Fehler durchschleichen, oder?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4434
Erhaltene Danke: 909


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 27.05.16 19:27 
Wenn du nur Felder hinzu zufügst oder entfernst solltest du sicher sein. (Ich hoffe du hast das tatsächlich ausprobiert!)
Du brauchst aber natürlich hier und da eventuell Tests ob die gelesene Daten Sinn machen.

Beispiel: Du fügst tatsächlich das Feld Alter hinzu liest aber eine alte Xml Datei ein die Alter noch nicht hat. Dann wird die Property Alter nicht angefasst und steht auf dem default Wert. Du musst also im Code irgendwo auf das Alter prüfen und feststellen das Alter = 0 auch ein nicht existentes Alter bedeuten kann und nicht das gültige Alter 0. Du kannst nicht existent von Alter = 0 in der xml nicht unterscheiden. Wenn also Alter = 0 ein gültiger Wert ist musst du dir was überlegen.
Übrigens klingt eine Alter Property falsch. Alter ist üblicherweise was was sich von selbst ändert. Einfach so durch warten ;) Speichern sollte man nur Daten (oder in einer Form) die sich nicht von selbst ändern.

Für diesen Beitrag haben gedankt: doublecross