Entwickler-Ecke
C# - Die Sprache - beim serialisieren wird die Klasse nochmal gelesen
kiar - Sa 14.01.06 19:51
Titel: beim serialisieren wird die Klasse nochmal gelesen
moin,
wie kann ich verhindern, das ein Randomwert nochmal gelesen wird, dies führt ja zu falschen ergebnissen.
Hintergrund ist, ich ermittele die WochenKilometer um diese auf den Kilometerstand dazu zu addieren.
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:
| public class Retour : Fahrt { public Retour() : base() { } public int W_Kilometer { get { Random r = new Random(); int x = r.Next(330, 550); int a = (x % 5); return (x - a); } } public override int S_Kilometer { get { return base.S_Kilometerr + W_Kilometer; } set { base.S_Kilometer = value; } }
} |
Wenn ich jetzt serialisiere wird ja die Klasse nochmal gelesen, was jedoch den W_Kilometerwert ändert. Es stört mich nur soweit, das W_Kilometer neu ermittelt wird, der Wert als solcher, ist mir egal.
Was kann ich machen, das er diesen wert beim serialisieren nicht neu ermittelt?
raik
Christian S. - Sa 14.01.06 20:05
Irgendwie verstehe ich noch nicht ganz, was Du genau möchtest. Wenn ich das richtig sehe, wäre es für Dich am Besten, wenn W_Kilometer gar nicht mit serialisiert würde, da er eh immer per Zufall erzeugt wird? (Würde in meinen Augen Sinn machen, den nicht mitzuspeichern)
kiar - Sa 14.01.06 20:19
Moin Christian,
für den Zweck ist es richtig, ist nicht nötig.
ich schreibe an einem Abrechnungsprogramm für Reisekosten. Diese könnten, in Zukunft, in zwei Teilen ausgeführt werden.
Einmal die Abrechnung zur Baustelle und zurück, und in der Zukunft werden wir wohl auch noch innerhalb der Woche die Kilometer von der Unterkunft zur Baustelle mit ausführen. Da das holländisch Finanzamt, maximal 110 Kilometer/ Tag bezahlt, und immer 110 kilometer zu auffällig sind habe ich einen flexiblen Wochenbetrag genommen.:-)
Es kann also sein, das die Wochenkilometer schon gespeichert werden müssen.
ich sollte vllt die Wochenkilometer nochmal separat speichern, und wenn dieses erfüllt ist nicht nochmal den ermitteln
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if (WochenKilometer<= 0) { return base.S_Kilometer + W_Kilometer; } else { return base.S_Kilometer; } |
raik
Christian S. - Sa 14.01.06 20:23
Oder Du speicherst bei W_Kilometer den beim ersten Aufruf erzeugten Zufallswert und gibst diesen bei jedem erneuten Aufruf zurück.
kiar - Sa 14.01.06 20:28
das ist natürlich noch eleganter, werde dies mal probieren..
danke raik
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!