使用XML序列化序列化類時,如何使某些屬性有條件輸出。即在某些情況下,它輸出這個屬性,在其他情況下,它不輸出。如何在某些情況下序列化某些屬性
7
A
回答
13
你可以創建一個名爲MyPropertySpecified
的附加屬性,它返回一個布爾值。
當此屬性返回true時,MyProperty
屬性將被序列化。當它返回false時,它不會被序列化。
此外,你想裝飾該屬性與XmlIgnoreAttribute
,以便這個特定的屬性不序列化。
例子:
public class Person
{
public string Name
{
get;
set;
}
[XmlIgnore]
public bool NameSpecified
{
get { return Name != "secret"; }
}
}
0
0
恕我直言,你需要實現的類IXmlSerializable的和實施這樣一種方式,他們只寫根據條件您指定的屬性,並能處理閱讀中WriteXML和的ReadXml方法有或沒有特定屬性出現在反序列化中。
4
雖然作品,是一個相當短的解決方案,propertyNameSpecified
模式在我看來,有一些缺點(污染類的接口;依靠屬性名稱;介紹了隱行爲)。
如果您只需要實現一個簡單條件(例如,不要序列化默認值),那麼DefaultValue
屬性是一個更好的選擇。
例如:
public class PurchaseOrder
{
[DefaultValue("2002")]
public string Year;
}
如果年的值是 「2002」,它將從XML輸出被省略。
相關問題
- 1. 在某些情況下
- 2. 在某些情況下
- 3. System.Security.Cryptography.ProtectedData.Unprotect在某些情況下
- 4. MYSQL在某些情況下的性能!=某些東西
- 5. SQL只評估某些情況某些情況下db2和sybase
- 6. 如何在某些情況下禁用頁面加載屬性
- 7. 如何讓javax.validation在某些情況下
- 8. 優化iOS應用某些情況下
- 9. 某些情況下的「困難」排序
- 10. 某些環境變量在某些情況下不加載
- 11. solr「 - 」在某些情況下不起作用並且適用於某些情況
- 12. Android在某些情況下崩潰
- 13. vb.net FTP - 工作在某些情況下
- 14. 在某些情況下防止null
- 15. PowerBIClient在某些情況下生成System.ArrayTypeMismatchException
- 16. php:在某些情況下避免__get?
- 17. 的UIImageView autoresizingmask在某些情況下
- 18. fn_cdc_map_lsn_to_time在某些情況下返回NULL
- 19. 在某些情況下創建它
- 20. ExtJS的5 rowediting在某些情況下
- 21. 使用@XmlTransient只在某些情況下
- 22. 在某些情況下隱藏CheckBoxPreference
- 23. 在某些情況下只保存NSManagedContext
- 24. RichEditBox在某些情況下崩潰。
- 25. GridView HeaderText在某些情況下爲空
- 26. 在某些情況下的IdentifierForVendor值
- 27. Rails - 在某些情況下使用CSS
- 28. AspectJ和Spring IOException在某些情況下
- 29. 如何在克隆時使某些屬性不被序列化?
- 30. 只能序列化某個類的某些特定屬性?
我想你誤解了這個問題。 OP想要輸出屬性(包含在xml中)。 – 2010-12-08 10:29:29