我想找到一种改变属性序列化行为的方法。
假设我有一个这样的情况:
[Serializable]
public class Record
{
public DateTime LastUpdated {get; set; }
// other useful properties ...
}
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
// other useful properties ...
}
现在我想序列化EmployeeRecord,但我不想序列化Record类中的LastUpdated属性。(但我希望在序列化Record时序列化LastUpdated)。
首先我尝试使用new关键字隐藏LastUpdated属性,然后添加XmlIgnore属性:
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
[XmlIgnore]
public new DateTime LastUpdated {get; set; }
// other useful properties ...
}
但那样做不起作用。然后我尝试将基类的LastUpdated属性设置为虚拟并覆盖它,保留该属性:
[Serializable]
public class Record
{
public virtual DateTime LastUpdated {get; set; }
// other useful properties ...
}
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
[XmlIgnore]
public override DateTime LastUpdated {get; set; }
// other useful properties ...
}
这个也没有起作用。在这两个尝试中,LastUpdated 忽略了 XmlIgnore 属性并愉快地执行序列化操作。
有没有办法让我想做的事情发生?