【发布时间】:2015-02-03 20:26:29
【问题描述】:
将 WPF 与 C# 结合使用,我正在寻找一种仅序列化列表的一部分的方法。我知道可以找出列表是否为空,并且仅在不是时才进行序列化。但是,我希望查看列表元素的成员,并根据它们的值对它们进行序列化或不序列化。
例如:从下面的类中,Sub2ClassType 类的列表“字段”中的元素只应在其成员“strValue”不等于“”时出现在 XML 中。
这可能吗?我尝试了各种方法,包括 Onserialize() 的代码,但无济于事。
namespace somenamespace
{
[Serializable()]
[XmlRoot(Namespace = "dashboard", ElementName = "dashboardSettings")]
public class dashboardSettings
{
[XmlElement("sub1class", Namespace = "")]
public Sub1Class sub1class{ get; set; }
}
public class Sub1Class
{
[XmlElement("sub2class")]
public ObservableCollection<Sub2Class> sub2class{ get; set; }
public Sub1Class()
{
sub2class = new ObservableCollection<Sub2Class>();
}
}
public class Sub2Class : Patch
{
[XmlAttribute("name")]
public string strName{ get; set; }
[XmlElement("type")]
public Sub2ClassType type{ get; set; }
}
public class Sub2ClassType
{
[XmlAttribute("name")]
public string type{ get; set; }
// These should only be serialized if member strValue != ""
[XmlElement("elems", IsNullable = false)]
public ObservableCollection<Sub2ClassField> fields{ get; set; }
public PatchTypeDetectionType()
{
fields = new ObservableCollection<Sub2ClassField>();
}
}
public class Sub2ClassField
{
[XmlAttribute("field")]
public string strField{ get; set; }
[XmlAttribute("value")]
public string strValue{ get; set; }
public DSIField()
{
strField = "";
strValue = "";
}
public override string ToString()
{
return strValue;
}
}
}
【问题讨论】:
-
创建新的过滤列表并将其序列化。
标签: c# wpf serialization