J'ai donc corrigé un bogue dans un framework que je suis en train de développer. Le pseudo-pseudo ressemble à ceci:Modèles de cache dans 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();
Donc, essentiellement, je recevais un objet à partir du cache, puis plus tard en comparant l'objet original à l'objet mis en cache pour voir si je dois sauver la base de données au cas où il est changé. Le problème est survenu parce que l'objet d'origine est une référence ... donc changer someValue a également changé l'objet mis en cache référencé, donc il ne sauvegardera jamais dans la base de données. Je l'ai corrigé en clonant l'objet hors de la version en cache, en coupant la référence et en me permettant de comparer le nouvel objet avec celui en cache.
Ma question est: Y at-il une meilleure façon de le faire, un modèle, que vous pourriez recommander? Je ne peux pas être la seule personne à avoir fait ça auparavant :)
Il y a beaucoup de choses que je ne connais pas sur les langues et la syntaxe. +1 parce que j'ai appris que vous pouvez rendre un setter privé dans une propriété publique. Awesomeness s'ensuit! – theo
@theo: Seulement dans les versions ultérieures de .NET (je crois 2.0+, peut-être 3.0?) – Broam