XmlSerializer和可接受的值

本文关键字:可接受 XmlSerializer | 更新日期: 2023-09-27 18:15:27

你好,我正在做一个项目,我应该序列化和反序列化我的对象到Xml和返回到对象。我使用XmlSerializer类来实现这一点。所以我的问题是,如果元素的属性值无效,我不知道如何防止序列化。例如,我有一个名为person的元素它包含一个属性(name)我希望防止用户在此属性中放置除(Alex, Nick,..)之外的其他名称。在这种情况下,我需要xsd限制(模式)之类的东西,但对于我的模型。我该如何解决这个问题?

XmlSerializer和可接受的值

如果你只想要条件序列化,你可以使用ShouldSerialize*模式。因此,如果您有一个属性Name(例如),您可以添加:

public bool ShouldSerializeName() {
    /* validate; return true to serialize, false to skip */
}

对于XmlSerializer,该方法需要是公共的,尽管相同的模式在其他地方也可以工作(System. xml)。

我不确定在某些情况下忽略某些数据是否是一个好主意,但是如果您真的想这样做,请查看IXmlSerializable接口。我认为手动实现这个接口将是满足您需求的唯一途径。