Tôi có một số lớp không thay đổi được khi giá trị ban đầu của chúng được đặt. Eric Lippert gọi số này là write-once immutability.Tính không biến đổi và tuần tự hóa XML
Thực hiện ghi một lần bất biến trong C# thường có nghĩa là đặt giá trị ban đầu thông qua hàm tạo. Các giá trị này khởi tạo các trường chỉ đọc.
Nhưng nếu bạn cần tuần tự hóa một lớp như thế này thành XML, sử dụng XmlSerializer hoặc DataContractSerializer, bạn phải có một hàm tạo tham số.
Có ai có đề xuất về cách khắc phục sự cố này không? Có những dạng bất biến nào khác hoạt động tốt hơn với serialization không?
EDIT: Như @Todd đã chỉ ra, DataContractSerializer không yêu cầu một hàm tạo parameterless. Theo số DataContractSerializer documentation on MSDN, DataContractSerializer "không gọi hàm khởi tạo của đối tượng đích."
Tôi nghĩ rằng bạn đang gây nhầm lẫn ... những gì bạn mô tả là bất khả xâm phạm popsicle. Nó trông giống như viết một lần bất biến với tôi. –
chỉnh sửa: ... là ** không ** popsicle ... –
Bạn hoàn toàn đúng, @Martinho. Tôi đã sửa chữa câu hỏi của mình để đọc "viết một lần bất biến". – dthrasher