Tôi đang tìm kiếm thuộc tính tích hợp để chỉ định loại là không thay đổi và tôi chỉ tìm thấy System.ComponentModel.ImmutableObjectAttribute.ImmutableObjectAttribute được sử dụng như thế nào?
Sử dụng Trình phản xạ, tôi đã kiểm tra nơi nó được sử dụng và có vẻ như lớp công khai duy nhất sử dụng nó là System.Drawing.Image ... WTF? Nó có thể đã được sử dụng trên chuỗi, int hoặc bất kỳ kiểu nguyên thủy nào, nhưng Hình ảnh chắc chắn là không phải là không thay đổi, có rất nhiều cách để thay đổi trạng thái nội tại của nó (sử dụng một phương thức đồ họa hoặc phương pháp Bitmap.SetPixel).
Vì vậy, lớp duy nhất trong BCL được tuyên bố rõ ràng là không thay đổi, là có thể thay đổi! Hay tôi đang thiếu một cái gì đó?
"không phải là đối tượng là chính nó bất biến" - Tài liệu chỉ định rằng thuộc tính này "Chỉ định rằng một đối tượng không có tài sản con có khả năng được chỉnh sửa". Có vẻ như những gì bạn đang nói là mâu thuẫn với tài liệu. Bạn có thể giải thích? – MasterMastic
@Ken, thuộc tính này có nghĩa là đối tượng không có thuộc tính con nào được * chỉnh sửa * khi sử dụng trình chỉnh sửa thuộc tính * giống như trong trình thiết kế biểu mẫu của Visual Studio. Các thuộc tính đó vẫn có thể được đặt hoặc sửa đổi từ mã bất kể thuộc tính này. Theo tài liệu hiện tại, nhấn mạnh mỏ: "Thuộc tính này thường được sử dụng * trong cửa sổ Properties * để xác định xem có * render * một đối tượng có thể mở rộng là chỉ đọc hay không. Như vậy, thuộc tính này * chỉ được sử dụng ở thời gian thiết kế *. " –