是否有可能在不指定序列化属性的情况下控制XmlSerializer
/DataContractSerializer
的行为?
更具体地说,我想控制序列化(XmlIgnore
、自定义属性名称等),但不希望装饰我的属性。
使用案例:
- 已存在的大型类,我不想用序列化属性污染它们
- 对于没有源代码的类进行序列化
- 从使用
XmlSerializer
转换为使用DataContractSerializer
或JSON而不更改类代码
例如,如何在不取消注释属性的情况下对以下内容进行序列化:
// [Serializable]
public MyClass
{
// [XmlIgnore] - The following property should not be serialized, without uncommenting this line
public int DontSerializeMeEvenThoughImPublic { get; set; }
// [XmlAttribute("another_name")] - should be serialized as 'another_name', not 'SerializeMeAsXmlAttribute'
public double SerializeMeAsXmlAttribute { get; set; }
// [DataMember] - should be included
private string IWantToBeSerializedButDontDecorateMeWithDataMember { get; set; }
}
DontSerializeMeEvenThoughImPublic
将被序列化,尽管它应该被忽略。 - bavaza