2009-04-24 57 views
4

我有一個序列化爲XML文件的類。有幾個很少使用但始終創建​​的屬性。如果我在XML中刪除它們,反序列化仍然有效,因爲它們具有默認值。如何告訴C#省略創建序列化過程中默認的屬性?

這些不必要的(bool)屬性使XML難於閱讀。

我可以以某種方式告訴C#省略仍具有默認值的元素或屬性嗎?

回答

12

指定DefaultValueAttribute,如果值匹配,則不會輸出。

+0

'[System.ComponentModel.DefaultValue(false)]'爲bool值做了它 - 謝謝:) – MrFox 2009-04-24 10:19:09

0

使用XMLIgnore()屬性在序列化/反序列化中標記要插入的屬性。

+0

不,這將** alays **排除它;問題是當它具有默認值時排除它。 – 2009-04-24 10:15:44

+1

我認爲OP想要忽略具有默認值的屬性。您的解決方案會導致屬性始終被忽略。 – 2009-04-24 10:15:49

6

羅蘭有簡單的價值觀的答案。對於更復雜的場景,您可以添加一個名爲public bool ShouldSerializeFoo()(屬性Foo)的方法 - 它返回false,它不會被序列化。

相關問題