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

时间:2013-06-13 16:11:49

标签: c# interface xml-serialization

我有以下实用工具方法来帮助将对象序列化为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;
}

这适用于基本类型。但是,如果我的类型有一个属性是一个接口,那么它将无法正常工作。我的类型是否可以实现一个接口,该接口仅指定序列化时希望包含的类型的属性?

我很感激帮助,因为我不太愿意这样做,但似乎有可能。感谢

2 个答案:

答案 0 :(得分:1)

查看Controlling XML Serialization Using Attributes

  

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

     

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

XmlIgnoreAttribute Class

  

指示XmlSerializer的Serialize方法不要序列化   公共领域或公共读/写属性值。

示例中的内容

public class Group
{
   // The XmlSerializer ignores this field.
   [XmlIgnore]
   public string Comment;

   // The XmlSerializer serializes this field.
   public string GroupName;
}

答案 1 :(得分:1)

如果使用XmlIgnore属性为类成员添加前缀,则XmlSerializer将不会对其进行序列化/反序列化。例如:

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