Tôi tìm thấy các thuộc tính [DataContract]
và [DataMember]
có chút lộn xộn và muốn thực hiện điều này bằng mã trong phương thức cấu hình hoặc thứ gì đó. Điều này có thể không?Đặt DataContract và DataMember Nếu không có tất cả các thuộc tính
Trả lời
Bạn không phải sử dụng các thuộc tính này chút nào. DataContractSerializer
sẽ tuần tự hóa tất cả các thuộc tính công khai với getter và setter nhưng trong trường hợp serializing thực thể với các thuộc tính dẫn hướng, bạn sẽ dễ dàng kết thúc với ngoại lệ do "tham chiếu cyclic".
Để tránh ngoại lệ đó, bạn phải sử dụng [DataContract(IsReference = true)]
trên lớp tổ chức của mình với DataMember
trên mọi thuộc tính bạn muốn serilize hoặc IgnoreDataMember
trên mọi thuộc tính bạn không muốn sắp xếp theo thứ tự.
Tùy chọn cuối cùng và phức tạp nhất là tránh các thuộc tính hoàn toàn và các lớp tùy chỉnh triển khai IDataContractSurrogate
để kiểm soát việc tuần tự hóa bên ngoài loại.
Bạn cũng có thể viết quy trình tuần tự hóa hoàn toàn tùy chỉnh của mình hoặc sử dụng tuần tự hóa XML hoặc tuần tự hóa nhị phân với tất cả các yêu cầu của nó.
Nhưng tôi thêm [DataContract] vào lớp của mình và tôi có thể trả lại từ một hoạt động WCF ... nhưng nội dung trống, vì vậy tôi thêm [DataMember] vào một vài thuộc tính và đột nhiên những cái đó (và chỉ những cái đó) được trả lại trong kết quả tuần tự. Vậy tại sao tôi không làm việc như bạn nói ở đâu theo mặc định tất cả các thuộc tính được trả về? –
BTW, chúng là tài sản công cộng với {get; set;} –
Khi bạn thêm thuộc tính 'DataContract', bạn ** phải ** đánh dấu các thuộc tính bạn muốn tuần tự hóa với thuộc tính' DataMember'. Tuần tự hóa mặc định mà tôi mô tả chỉ hoạt động nếu bạn không sử dụng thuộc tính 'DataContract'. –
Không, DataContractSerializer là một bộ nối tiếp chọn tham gia - bạn phải nói với nó những gì bạn muốn đưa vào.
Với các trình nối tiếp khác, bạn cần phải sử dụng những thứ như NonSerializedAttribute hoặc XmlIgnoreAttribute để thông báo cho trình nối tiếp rời khỏi mọi thứ.
- 1. Khi nào sử dụng các thuộc tính DataContract và DataMember?
- 2. DataContractSerializer: Cách tuần tự hóa các lớp/thành viên mà không có thuộc tính DataContract/DataMember
- 3. Thêm thuộc tính [DataMember] [DataContract] vào Entity Framework POCO Template
- 4. DataContract, mặc định DataMember giá trị
- 5. WCF DataContract DataMember thứ tự?
- 6. Bắt tên của tất cả các datamembers trong một DataContract
- 7. WCF DataContract serialization thuộc tính chỉ đọc?
- 8. DataContract & DataMember thuộc tính - làm thế nào chúng ảnh hưởng đến loại
- 9. Đặt thuộc tính VerticalAlignment cho tất cả các điều khiển
- 10. Web API nullable cần đòi hỏi DataMember thuộc tính
- 11. Có lợi ích nào trong việc sử dụng các thuộc tính DataContract và DataMember khi làm việc với Asp.net Web API không?
- 12. Cắt tất cả các thuộc tính chuỗi
- 13. Xóa tất cả các thuộc tính
- 14. Tìm tất cả các lớp có thuộc tính cụ thể
- 15. Có thuộc tính chung cho tất cả các phần tử HTML ngoài ID và lớp không?
- 16. querySelectorAll - nhận TẤT CẢ các thẻ có thuộc tính được đặt?
- 17. Có cách nào để có được tất cả các thuộc tính của DOMElement không?
- 18. C#: Cách nhận tất cả các thuộc tính chuỗi công khai (cả nhận và đặt) của một loại
- 19. DataContract và thừa kế?
- 20. javascript: chọn tất cả các phần tử có thuộc tính "data-" (không có jQuery)
- 21. Các thuộc tính tùy chọn khi deserializing một DataContract/Serializable mish-mash
- 22. Groovy Liệt kê tất cả các thuộc tính cho lớp
- 23. jQuery nhận tất cả các thuộc tính HTML
- 24. Tìm tất cả các bước trong đường dẫn thuộc tính
- 25. CSS ẩn tất cả hình ảnh có thuộc tính SRC
- 26. Ember.js: Quan sát tất cả các thuộc tính đối tượng
- 27. Làm thế nào để loại bỏ các thuộc tính DataMember null từ các phản ứng trong WCF
- 28. Phản ánh trên tất cả các thuộc tính của giao diện, bao gồm cả các thuộc tính được kế thừa?
- 29. Có thể buộc tất cả các thuộc tính DateTime được mô hình hóa là DateTime2 không?
- 30. Tại sao Thuộc tính được Chỉ định của Thuộc tính Dữ liệu Web cần phải được đặt cho int và Dữ liệu nhưng không phải cho Chuỗi
Điều gì lộn xộn về trang trí trả trước? –
Không chắc chắn cách trả lời. Chỉ lộn xộn thôi. –
Tôi có rất nhiều thực thể và đối với hầu hết các phần tôi muốn mở rộng tất cả chúng bao gồm tất cả các thuộc tính, do đó, nó chỉ cảm thấy cồng kềnh để lặp lại một thuộc tính hàng trăm lần. Tôi hy vọng sẽ tìm ra cách tiếp cận "chọn không tham gia" mà Ladislov đang giúp tôi với bên dưới. Tôi muốn trang trí cho các thành viên mà tôi không muốn bao gồm. –