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";
}

在这里,我只想序列化那些被赋值的属性。

C# 中属性的条件序列化

可以在每个属性上使用 XmlElementAttribute,并将 IsNullable 设置为 false。

这里有一个关于 MSDN 的示例。

[XmlElementAttribute(IsNullable = false)]
public string City;

或使用较短的形式:

[XmlElement(IsNullable = false)]
public string City;

编辑:对于可为空的值类型,您必须跳过一些额外的箍并添加一个属性,告诉序列化程序是否应该序列化该值。

public bool ShouldSerializeMyNullableInt() 
{
  return MyNullableInt.HasValue;
}

请参阅此答案以供参考:XML 序列化 - 隐藏空值