Así que acabo de arreglar un error en un marco que estoy desarrollando. El pseudo-pseudocódigo es el siguiente:Patrones de almacenamiento en caché en 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();
Así que, esencialmente, que estaba recibiendo un objeto de la caché, y luego más tarde en la comparación del objeto original al objeto almacenado en caché para ver si tengo que guardarlo en la base de datos en caso de que haya cambiado. El problema surgió porque el objeto original es una referencia ... por lo que el cambio de algún valor también cambió el objeto en caché al que se hace referencia, por lo que nunca se guardará de nuevo en la base de datos. Lo arreglé clonando el objeto de la versión almacenada en caché, cortando la referencia y permitiéndome comparar el nuevo objeto con el almacenado en caché.
Mi pregunta es: ¿hay alguna manera mejor de hacer esto, algún patrón que usted pueda recomendar? No puedo ser la única persona que ha hecho esto antes :)
Hay muchas cosas que no sé sobre lenguajes y sintaxis. +1 porque aprendí que puedes hacer que un setter sea privado dentro de una propiedad pública. Awesomeness sobreviene! – theo
@theo: solo en versiones posteriores de .NET (creo 2.0+, tal vez 3.0?) – Broam