2012-02-24 32 views
8

Làm cách nào để đánh dấu các thuộc tính, chúng không nên được tuần tự hóa nếu chúng có giá trị mặc định? Ví dụ nếu tôi có giá trị boolean nó shoudl được serialized nếu chỉ được đặt thành true, cùng với giá trị nullable, nếu chúng là null tôi không muốn bao gồm chúng trong tập tin serialization của tôi.Làm thế nào để tránh các giá trị mặc định tuần tự hóa?

+0

Mục đích của việc này là gì !? –

+0

để có tập tin nhỏ hơn cos tôi cần phải gửi nó đôi khi thrue gprs mạng, nơi tôi cần phải trả tiền cho hồ sơ, anyway trong quá trình phục hồi (deserialization) họ sẽ được thiết lập giá trị mặc định nếu họ không tồn tại như vậy làm thế nào để tránh serializing chúng? – kosnkov

+0

Tôi nghĩ bạn sẽ phải viết bộ nối tiếp của riêng bạn hoặc xử lý hậu kỳ của bộ nối tiếp tích hợp với các quy tắc của riêng bạn. –

Trả lời

22

Ok tôi đã tự tìm thấy. Đó là [DefaultValue(false)]. Nếu tôi đánh dấu một số thuộc tính với attr này thì nó sẽ được tuần tự hóa nếu khác với giá trị trong().

System.ComponentModel.DefaultValueAttribute

+0

Cảm ơn bạn đã giải pháp! Bất kỳ ý tưởng làm thế nào để tránh rằng tôi phải đặt giá trị mặc định hai lần? '[DefaultValue (" Trạng thái ")] trạng thái chuỗi công khaiTag =" Trạng thái ";' – pfuhlert

4

Có những thứ như thuộc tính được chỉ định. Tôi không thể tìm thấy tài liệu msdn trên nó nhưng this article phải hữu ích. Về cơ bản bạn phải viết một cái gì đó như thế này:

//this property would not be serialized if it contains String.Empty value 
public string PropertyName { get; set; } 


[XmlIgnore] 
public bool PropertyNameSpecified 
{ 
    get { return PropertyName != String.Empty; } 
} 
+0

nhận {return PropertyName! = String.Empty; } đó là gì? u tái so sánh bool với chuỗi, và khi tôi thêm xmlIgnore nó không bao giờ xuất hiện trong tập tin tuần tự ngay cả khi tài sản này không phải là null hoặc là đúng trong trường hợp bool. – kosnkov

+0

Tôi đã chỉnh sửa câu trả lời của mình. Hy vọng điều này cung cấp cho bạn sự hiểu biết đúng đắn về những gì đang xảy ra ở đó. –

Các vấn đề liên quan