c#中属性的条件序列化

时间:2016-03-01 17:48:58

标签: c# .net xml-serialization

我的课程很少,有很多属性。将根据特定条件分配这些属性的值。将值分配给少数属性后,我想序列化对象并仅包含那些赋值给它们的道具。

我试过在互联网上搜索这个但我找不到任何运气。

任何关于实施此建议的建议都将受到高度赞赏。

更新

我有一些像

这样的课程
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";
}

在这里,我想仅序列化那些赋值给它们的属性。

1 个答案:

答案 0 :(得分:0)

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

MSDN上有一个示例here

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

或使用较短的表格:

[XmlElement(IsNullable = false)]
public string City;
编辑:对于可以为空的值类型,您必须跳过一些额外的箍并添加一个属性,告诉序列化程序是否应序列化该值。

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

请参阅此答案以供参考:Xml serialization - Hide null values