Tôi muốn biết các tình huống phổ biến nhất khi xml serialization có thể thất bại trong .NET.Các trường hợp Xml serialization không thành công trong .NET
Trả lời
Tôi đang nghĩ chủ yếu của XmlSerializer
đây:
- nó được giới hạn dữ liệu cây tương tự; nó không thể xử lý đồ thị đối tượng đầy đủ
- nó được giới hạn cho các thành viên công cộng, trên lớp công
- nó có thể không thực sự làm được gì nhiều với
object
thành viên - nó có một số điểm yếu xung quanh Generics
- giống như nhiều serializers, nó sẽ không chạm vào các thuộc tính ví dụ về một bộ sưu tập (thực hành xấu ở nơi đầu tiên)
- xml đơn giản là không phải lúc nào cũng là một lựa chọn tốt cho dữ liệu lớn (không kém, cho hiệu suất)
- đòi hỏi một constructor parameterless công
DataContractSerializer
giải quyết một số trong số này, nhưng có những hạn chế riêng của mình:
- nó không thể xử lý các giá trị trong thuộc tính
- đòi hỏi .NET 3.0 (vì vậy không sử dụng nhiều trong 2,0)
Vấn đề thành viên nào có thể được giải quyết bằng cách sử dụng DataContractSerializer –
đúng - sẽ làm rõ ... –
Đây là tất cả những điều tốt đẹp để biết về khuôn khổ Xml serialization trong .NET, nhưng tôi sẽ không nói chúng là những tình huống phổ biến mà XML serialization "không thành công". Ví dụ, Xml serializer serializes chỉ công khai đọc/ghi các thành viên là một thuộc tính của khuôn khổ serialization, không phải là một kịch bản mà nó không thành công. Rằng nó đòi hỏi các lớp để có một ctor parameterless public cũng không phải là một "thất bại" cho mỗi se. – Cheeso
TimeSpan
đối tượng không thể tuần tự hóa được. IDictionary
Các loại thực hiện không thể tuần tự hóa (mặc dù chúng có thể được tuần tự hóa với một số thao tác xoa bóp thủ công).
Tùy thuộc vào bộ nối tiếp, các tham chiếu tuần hoàn có thể không hoạt động
AFAIK, các lớp được đánh dấu là [Lỗi thời] sẽ không được xê-ri hóa bởi XmlSerializer từ .NET 2.0
Không thể dễ dàng tuần tự hóa các bộ sưu tập chung.
Xem một câu hỏi khác: C# XML Serialization Gotchas
Sử dụng từ khóa bóng cũng đã phá vỡ serialization và deserialization đối với tôi vì shadowing gây ra một thực hiện mới của tài sản đó để tồn tại làm cho nó tương thích để xây dựng lại thích hợp. Chỉ sử dụng các tình trạng quá tải nếu bạn muốn gõ lại cho một lớp con cụ thể.
Đối với những người không biết VB.NET, "' Shadows' "tương đương với' new' trong C#: 'public new int PropertyName {get; set;}' trong đó lớp cơ sở có 'public virtual int PropertyName. ..'. –
- 1. Xml serialization trong C#
- 2. Trường hợp nào là protobuf-net không phù hợp?
- 3. thuộc tính bắt buộc trong XML serialization
- 4. xml Conditional serialization
- 5. C# Xml Serialization & Deserialization
- 6. Trường hợp thử nghiệm Spring JUnit không thành công
- 7. Enum serialization Json vs XML
- 8. C# - serialization XML của các lớp thừa
- 9. XML serialization + Namespaces (C#)
- 10. Xml Serialization Dynamic Ignore
- 11. Nối tiếp thành XML bằng cách sử dụng boost :: serialization
- 12. Xem thêm Scala XML serialization
- 13. Nối tiếp một bitmap trong C# /. NET thành XML
- 14. xml serialization - xóa không gian tên
- 15. Lọc các ký tự XML bất hợp pháp trong .NET
- 16. iPhone trong trường hợp nào không thể nhận được địa chỉ mac thành công?
- 17. .NET/C# serial serialization problems
- 18. Các trường hợp tự động chạy lại dưa chuột không thành công với thẻ?
- 19. XML serialization của Danh sách <T> - XML gốc
- 20. Serialization and Obfuscation in .NET
- 21. Không serialization "mặc định" trong C# serialize trường tĩnh?
- 22. Loại serialization nào sử dụng Wcf đằng sau hậu trường?
- 23. Tự động khởi động lại trường hợp thử nghiệm không thành công trong TestNG/Selenium
- 24. JSON.Net Xml serialization hiểu sai mảng
- 25. thay đổi đầu ra của xml serialization
- 26. Serialization dựa trên trường Jackson
- 27. Generic serialization Danh sách XML với các lớp khác nhau
- 28. XML serialization của một bộ sưu tập trong C#
- 29. Trường hợp trong công tắc bảo vệ
- 30. Có ai sử dụng thành công COM không đăng ký với các thành phần .NET không?
Có thể là một bản sao của http://stackoverflow.com/questions/67959/net-xml-serialization-gotchas – dthrasher