我需要一种方法来定制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. createDelegate方法的接口方法
- 7. 隐藏接口的方法
- 8. 接口中的方法数
- 9. 接口的扩展方法
- 10. 接口方法的实现
- 11. 非接口方法
- 12. C#与IXmlSerializable的
- 13. 声明接口中的所有继承接口的方法?
- 14. 的Implmenting Java的接口方法
- 15. 的Java接口的重用方法
- 16. 使用XPath实现IXmlSerializable ReadXml()的最佳方法
- 17. IXMLSerializable的双引用
- 18. 在c#接口实现枚举和接口的方法签名
- 19. 从接口指针获取接口/对象的正确方法?
- 20. 正确的方法来做一个通用的接口方法?
- 21. 执行接口方法
- 22. 接口不包含方法
- 23. 扩展方法和接口
- 24. COM接口方法限制
- 25. groovy接口方法属性
- 26. 接口和公共方法
- 27. 覆盖接口方法PHP
- 28. 爪哇 - 接口和方法
- 29. 接口方法问题
- 30. 覆盖子接口方法
在某些时候你必须这样做,也看到这个https://stackoverflow.com/questions/1495716/net-xmlignore-by-default – Aybe
在'ElementXml'被填充的情况下,其他成员如'PropertyX'具有默认(空)值? – dbc
@dbc如果能解决问题,我可以让它们具有默认值。 – Filip