Итак, я только что исправил ошибку в разрабатываемой платформе. Псевдопсевдокод выглядит так:
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();
Итак, по сути, я получал объект из кэша, а затем сравнивал исходный объект с кэшированным объектом, чтобы узнать, нужно ли мне сохранить его в базе данных в случае его изменения. Проблема возникла из-за того, что исходный объект является ссылкой ... поэтому изменение someValue также изменило ссылочный кэшированный объект, поэтому он никогда не сохранится обратно в базу данных. Я исправил это, клонировав объект из кэшированной версии, разорвав ссылку и позволив мне сравнить новый объект с кэшированным.
Мой вопрос: Есть ли лучший способ сделать это, какой-нибудь шаблон, который вы могли бы порекомендовать? Я не могу быть единственным человеком, который делал это раньше:)