Laden...

Wert in einem private Member geht verloren, wie ist soetwas möglich?

Erstellt von bigeddie vor 13 Jahren Letzter Beitrag vor 13 Jahren 843 Views
B
bigeddie Themenstarter:in
372 Beiträge seit 2007
vor 13 Jahren
Wert in einem private Member geht verloren, wie ist soetwas möglich?

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😉

795 Beiträge seit 2006
vor 13 Jahren

Keinen 😜

Spaß beiseite, zeig mal ein bisschen Code. So ist das schwer nachzuvollziehen.

Gruß, Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
B
bigeddie Themenstarter:in
372 Beiträge seit 2007
vor 13 Jahren

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😉

795 Beiträge seit 2006
vor 13 Jahren

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.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
1.044 Beiträge seit 2008
vor 13 Jahren

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

F
10.010 Beiträge seit 2004
vor 13 Jahren

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.

B
bigeddie Themenstarter:in
372 Beiträge seit 2007
vor 13 Jahren

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😉