使用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