C# 中属性的条件序列化
本文关键字:条件 序列化 属性 | 更新日期: 2023-09-27 18:36:52
我有几个类具有许多属性。这些属性的值将根据某些条件分配。将值分配给几个属性后,我想序列化对象并仅包含那些分配了值的 props。
我尝试在互联网上搜索这个,但我找不到任何运气。
任何关于实施这一点的建议将不胜感激。
更新:
我有一些课程,例如
class A{
public static string PropA_in_A { get; set; }
public string PropB_in_A { get; set; }
public static string PropC_in_A { get; set; }
public static string PropD_in_A { get; set; }
}
class B{
public static string PropA_in_B { get; set; }
public static string PropB_in_B { get; set; }
public static string PropC_in_B { get; set; }
public static string PropD_in_B { get; set; }
}
class C{
public static string PropA_in_C { get; set; }
public static string PropB_in_C { get; set; }
public static string PropC_in_C { get; set; }
public static string PropD_in_C { get; set; }
}
这些类中的属性值需要根据条件分配。赋值后,只需要序列化那些赋值的属性。
main()
{
A.PropB_in_A="Some Value";
A.PropA_in_B="Some Value";
A.PropC_in_C="Some Value";
}
在这里,我只想序列化那些被赋值的属性。
可以在每个属性上使用 XmlElementAttribute,并将 IsNullable 设置为 false。
这里有一个关于 MSDN 的示例。
[XmlElementAttribute(IsNullable = false)]
public string City;
或使用较短的形式:
[XmlElement(IsNullable = false)]
public string City;
编辑:对于可为空的值类型,您必须跳过一些额外的箍并添加一个属性,告诉序列化程序是否应该序列化该值。
public bool ShouldSerializeMyNullableInt()
{
return MyNullableInt.HasValue;
}
请参阅此答案以供参考:XML 序列化 - 隐藏空值