Also habe ich gerade einen Fehler in einem Framework behoben, das ich entwickle. Der Pseudo-Pseudo-Code sieht wie folgt aus:Caching-Muster in ASP.NET
myoldObject = new MyObject { someValue = "old value" };
cache.Insert("myObjectKey", myoldObject);
myNewObject = cache.Get("myObjectKey");
myNewObject.someValue = "new value";
if(myObject.someValue != cache.Get("myObjectKey").someValue)
myObject.SaveToDatabase();
, also im Wesentlichen, ich war immer ein Objekt aus dem Cache, und dann später auf das ursprüngliche Objekt auf das zwischengespeicherte Objekt zu vergleichen, um zu sehen, ob ich es die sparen muß Datenbank für den Fall, dass es geändert wird. Das Problem trat auf, weil das ursprüngliche Objekt eine Referenz war ... also änderte someValue auch das referenzierte zwischengespeicherte Objekt, so dass es niemals in die Datenbank zurückspeichern würde. Ich habe es behoben, indem ich das Objekt von der zwischengespeicherten Version geklont habe, die Referenz durchtrennt und mir erlaubt habe, das neue Objekt mit dem zwischengespeicherten zu vergleichen.
Meine Frage ist: gibt es eine bessere Möglichkeit, dies zu tun, einige Muster, die Sie empfehlen könnten? Ich kann nicht die einzige Person sein, die das schon einmal gemacht hat :)
Es gibt viele Dinge, die ich nicht über Sprachen und Syntax weiß. +1, weil ich gelernt habe, dass Sie einen Setter in einer öffentlichen Eigenschaft privat machen können. Awesomeness folgt! – theo
@theo: Nur in späteren Versionen von .NET (ich glaube 2.0+, vielleicht 3.0?) – Broam