Vì vậy, tôi vừa sửa một lỗi trong một khung công tác mà tôi đang phát triển. Các giả giả trông như thế này:Mẫu Caching trong 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();
Vì vậy, về cơ bản, tôi đã nhận được một đối tượng từ bộ nhớ cache, và sau đó trên so sánh các đối tượng ban đầu để các đối tượng được lưu trữ để xem nếu tôi cần phải lưu nó vào cơ sở dữ liệu trong trường hợp nó thay đổi. Vấn đề nảy sinh bởi vì đối tượng ban đầu là một tham chiếu ... vì vậy việc thay đổi someValue cũng đã thay đổi đối tượng được lưu trữ tham chiếu, vì vậy nó sẽ không bao giờ lưu lại cơ sở dữ liệu. Tôi cố định nó bằng cách nhân bản đối tượng ra khỏi phiên bản được lưu trong bộ nhớ cache, cắt đứt tham chiếu và cho phép tôi so sánh đối tượng mới với đối tượng được lưu trong bộ nhớ cache.
Câu hỏi của tôi là: có cách nào tốt hơn để thực hiện việc này không, một số mẫu mà bạn có thể đề xuất? Tôi không thể là người duy nhất được thực hiện việc này trước đây :)
Có rất nhiều điều mà tôi không biết về ngôn ngữ và cú pháp. 1 bởi vì tôi đã học được rằng bạn có thể làm cho một setter riêng tư bên trong một tài sản công cộng. Awesomeness xảy ra sau đó! – theo
@theo: Chỉ trong các phiên bản sau của .NET (Tôi tin 2.0+, có thể 3.0?) – Broam