我有以下实用工具方法来帮助将对象序列化为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;
}
这适用于基本类型。但是,如果我的类型有一个属性是一个接口,那么它将无法正常工作。我的类型是否可以实现一个接口,该接口仅指定序列化时希望包含的类型的属性?
我很感激帮助,因为我不太愿意这样做,但似乎有可能。感谢
答案 0 :(得分:1)
查看Controlling XML Serialization Using Attributes
属性可用于控制对象的XML序列化 或者从同一组类创建备用XML流。
使用XmlIgnoreAttribute阻止序列化
可能存在公共财产或领域不需要的情况 序列化。例如,可以使用字段或属性来包含 元数据。在这种情况下,将XmlIgnoreAttribute应用于字段或 属性和XmlSerializer将跳过它。
指示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;