Hallo Community,
in einer Application existiert eine Object, welches eine gekapselte(private) Variable "id" vom Typ int enthält.
Der die Zuweisung eines Wertes ist nur über die Setter-Methode des entsprechenden Property "ID" möglich.
Diese Methode wird über einen Haltepunkt überwacht, um feststellen zu können ob und wann eine Werteübergabe an id erfolgt.
Eine Zuweisung erfolgt genau einmal, bei der Instanziierung.
Trotzdem verliert die Variable "id" ihren Wert und wird 0.
Welche Ursachen kann es für ein solches Verhalten geben?
Viele Grüße
Bigeddie
Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉
Keinen 😜
Spaß beiseite, zeig mal ein bisschen Code. So ist das schwer nachzuvollziehen.
Gruß, Christian.
Hi Brainiac,
das Projekt ist leider etwas größer, aber kann es sein, dass bei der Serialisierung (speicherung in einer Session oder im Viewstate) was zerschossen wird?
Grüße
Bigeddie
Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉
Das ist durchaus möglich. Ich weis ja jetzt nicht, wie du Serialisierst, aber sollte es per Reflection sein, ist es gut möglich, dass die private Variable nach dem Aufruf des Konstruktors nocheinmal durch den Deserialisierer verändert wird.
Gruß, Christian.
Hallo bigeddie,
gut möglich. Schau mal an welchen Stellen auf die Variable zugegriffen wird. An C# oder .NET kann es definitiv nicht liegen! Serialisierung kann eine Fehlerquelle sein.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Session oder ViewState bedeutet ASP.NET und natürlich ist das vollkommen normal dort.
ASP.NET ist Stateless, und alles was du zwischen 2 Aufrufen behalten möchtest musst Du selber in Session[], ViewState oder Application[] ablegen.
Es lag definitiv an der Serialisierung, denn der Programmierer von dem ich die Klassen übernommen habe, hatte für die "id" also das private Member das Attribut [NonSerialized()] angegeben und es hat deshalb nicht funktioniert, dass die "id" mitgenommen wurde.
Hatte anfangs nur die Dll vorliegen. mit Code sieht es nun viel besser aus.
Vielen Dank für eure Hilfe und die Tips
Viele Grüße
Bigeddie
Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉