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(330550);
                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