Tôi có một lớp học với nhiều thuộc tính công khai khác nhau mà tôi cho phép người dùng chỉnh sửa thông qua lưới thuộc tính. Đối với sự kiên trì, lớp này cũng được tuần tự hóa/deserialized thành/từ một tệp XML thông qua DataContractSerializer.Làm cách nào để tạo phiên bản chỉ đọc của một lớp học?
Đôi khi tôi muốn người dùng có thể lưu (thay đổi) các thay đổi mà họ đã thực hiện cho một phiên bản của lớp. Tuy nhiên, vào những lúc khác, tôi không muốn cho phép người dùng lưu thay đổi của họ và thay vào đó, hãy xem tất cả thuộc tính trong lưới thuộc tính là chỉ đọc. Tôi không muốn cho phép người dùng thực hiện thay đổi mà họ sẽ không bao giờ có thể lưu sau này. Tương tự như cách MS Word sẽ cho phép người dùng mở các tài liệu hiện đang được mở bởi người khác nhưng chỉ được đọc dưới dạng chỉ đọc.
Lớp của tôi có thuộc tính boolean xác định xem lớp có nên chỉ đọc hay không, nhưng có thể sử dụng thuộc tính này bằng cách nào đó thêm thuộc tính chỉ đọc vào thuộc tính lớp vào thời gian chạy không? Nếu không phải là một giải pháp thay thế là gì? Tôi có nên quấn lớp của mình trong lớp trình bao bọc chỉ đọc không?
Cảm ơn! Thật không may tùy chọn 2 không làm việc cho tôi vì lưới thuộc tính sẽ sử dụng sự phản chiếu để tìm ra các thuộc tính thực sự đằng sau một giao diện trong thực tế không chỉ đọc. Vì vậy, có vẻ như tùy chọn 3 là câu trả lời tốt nhất cho tôi. Mặc dù tôi thích đề xuất của bạn về việc kết hợp các tùy chọn 2 và 3. –
Tôi không thể diễn tả câu trả lời này là một trong những câu trả lời ngắn gọn và hoàn chỉnh nhất mà tôi tìm thấy trên web. –