指定在进行XML序列化时要包含的属性

本文关键字:包含 属性 序列化 XML | 更新日期: 2023-09-27 18:18:20

我有以下Utility方法来帮助将对象序列化为XML:

public static string Serialize(object input) {
    if (input != null) {
        using (var sw = new StringWriter()) {
            var serializer = new System.Xml.Serialization.XmlSerializer(_type);
            serializer.Serialize(sw, input);
            return sw.ToString();
        }
    } else
        return null;
}

这适用于基本类型。但如果我的类型有一个接口属性,那它就不能工作了。我的类型是否有可能实现一个接口,该接口只指定我希望在序列化时包含的类型的属性?

我很感激你的帮助,因为我不太清楚如何去做这件事,但似乎是可能的。由于

指定在进行XML序列化时要包含的属性

如果用XmlIgnore属性作为类成员的前缀,那么XmlSerializer将不会对其进行序列化/反序列化。例如:

// Super secret text here, must not be serialised
[XmlIgnore()]
public String SecurityCode = null;

看看使用属性控制XML序列化

属性可用于控制对象的XML序列化或者从同一组类中创建另一个XML流。

使用XmlIgnoreAttribute阻止序列化
在某些情况下,可能不需要公共属性或字段序列化的。例如,可以使用字段或属性来包含元数据。在这种情况下,将XmlIgnoreAttribute应用于字段或属性,XmlSerializer将跳过它。

XmlIgnoreAttribute类

指示XmlSerializer的Serialize方法不进行序列化公共字段或公共读/写属性值。

例如

public class Group
{
   // The XmlSerializer ignores this field.
   [XmlIgnore]
   public string Comment;
   // The XmlSerializer serializes this field.
   public string GroupName;
}
相关文章: