我需要一種方法來定製C#XML(反)序列化機制在這樣的條件使用這個。對象模型很複雜,所以通過屬性或元素一個元素來實現這個屬性對我來說不是一種選擇。 可以這樣做嗎?的IXmlSerializable的接口方法
0
A
回答
0
考慮使用System.ComponentModel.DefaultValue
屬性。
public class MyElement
{
[XmlAttribute]
public string PropertyX { get; set; }
[XmlElement]
public MySubElement SubElement { get; set; }
[DefaultValue("")]
public string ElementXml { get; set; }
}
如果ElementXml
是string.Empty
,那麼它不會被序列化。
你應該使用這樣的代碼:
private string _elementXml;
[DefaultValue("")]
public string ElementXml
{
get => _elementXml;
set => _elementXml = string.IsNullOrWhiteSpace(value) ? null : value;
}
在這種情況下,將不被序列化不僅爲空或空的,但也空格的任何字符串。
+0
這個問題解決了我的問題的哪一部分?跳過ElementXml序列化並不是問題,我也可以用ShouldSerialize方法來做到這一點。我需要帶有註釋的代碼部分解決方案。 – Filip
+0
@Filip - 它使用默認的序列化機制,沒有'IXmlSerializable'實現。 –
相關問題
- 1. 實現IXmlSerializable的接口
- 2. 接口的方法
- 3. 的接口方法
- 4. 複雜的對象圖使用IXmlSerializable的接口
- 5. IXmlSerializable的
- 6. 接口方法
- 7. createDelegate方法的接口方法
- 8. 接口方法的實現
- 9. 隱藏接口的方法
- 10. 接口的解決方法
- 11. 接口中的方法數
- 12. 方法的.NET MVC接口
- 13. 接口的擴展方法
- 14. C#與IXmlSerializable的
- 15. 非接口方法
- 16. Java - 接口方法
- 17. 在(方面)接口方法
- 18. 聲明接口中的所有繼承接口的方法?
- 19. IXMLSerializable的雙引用
- 20. 使用XPath實現IXmlSerializable ReadXml()的最佳方法
- 21. 的Java接口的重用方法
- 22. 的Implmenting Java的接口方法
- 23. 實現接口的對象的方法?
- 24. 抽象方法vs接口方法
- 25. F#兩個接口的顯式接口方法
- 26. 聲明的接口方法具有實現該接口
- 27. 在c#接口實現枚舉和接口的方法簽名
- 28. 從接口指針獲取接口/對象的正確方法?
- 29. 接口方法採取相同的實現接口
- 30. 從接口方法中排除類的最有效的方法
在某些時候你必須這樣做,也看到這個https://stackoverflow.com/questions/1495716/net-xmlignore-by-default – Aybe
在'ElementXml'被填充的情況下,其他成員如'PropertyX'具有默認(空)值? – dbc
@dbc如果能解決問題,我可以讓它們具有默認值。 – Filip