Vì vậy, tôi đã trải qua cơ sở mã của chúng tôi và tôi đã thấy một số DTO của chúng tôi có kết hợp và khớp với thuộc tính [DataMember]
và [IgnoreDataMember]
.Không có thuộc tính [DataMember] so với thuộc tính [IgnoreDataMember]
Trước đây, chúng tôi đã được thông báo rằng nếu chúng tôi không muốn thứ gì đó trong DTO được tuần tự hóa, chỉ cần không thêm thuộc tính [DataMember]
. Sau đó, tôi nhìn thấy các thuộc tính khác và đã làm một số đào và có vẻ như điều này rõ ràng nói rằng tài sản sẽ không được đăng.
Bây giờ câu hỏi của tôi là tốt hơn? Thêm [IgnoreDataMember]
hoặc không thêm bất kỳ thứ gì.
Tôi đã hỏi xung quanh và có vẻ như là [IgnoreDataMember]
là từ những ngày mà mọi thứ đã được đăng và bạn phải ra lệnh cho những gì cần bỏ qua (tôi tin vào .Net 2). Sau đó, họ đã thay đổi nó ngược lại và bạn phải nêu rõ những gì NÊN được sắp xếp theo thứ tự. Bây giờ có vẻ như bạn có thể làm cả hai.
cũng, theo MS: "Thuộc tính IgnoreDataMemberAttribute chỉ được vinh danh khi được sử dụng với các loại không được đánh dấu."; nếu bạn sử dụng '[DataContract]' và '[IgnoreDataMember]' trên cùng một lớp, cái sau bị bỏ qua. –
@MichaelEdenfield là phần tử thông thường, 'DataContractSerializer' mặc định là * tất cả các trường và thuộc tính công khai * (trường công khai rất hiếm); và thậm chí đó là một chút mơ hồ. Ví dụ, nếu chúng ta đang nói về 'NetDataContractSerializer', nó mặc định là * tất cả các trường * (public và private), nhưng không có thuộc tính nào –
Tôi biết đó là một chủ đề cũ, nhưng tôi gặp phải một vấn đề ngày hôm qua. nói là không chính xác như vậy. Tôi có một lớp học với một trường và 4 thuộc tính. Tất cả 4 thuộc tính chuyển đổi một số dạng dữ liệu (mảng byte, chuỗi hoặc các chuỗi khác) và ghi nó vào một trường. Tôi đã đánh dấu lớp với thuộc tính DataContract và chỉ đánh dấu trường là một DataMember. Tuy nhiên, theo cách này deserializer đã không bỏ qua các thuộc tính, nhưng đặt chúng thành giá trị mặc định (sẽ ghi đè lên trường) .Thêm [IgnoreDataMember] vào các thuộc tính đã khắc phục vấn đề. Vì vậy, nó không bị bỏ qua –