Я пытаюсь найти способ изменить поведение сериализации свойства.
Давайте скажем, что у меня такая ситуация:
[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. Я не хочу, чтобы свойство LastUpdated из класса Record было сериализовано. (Я хочу, чтобы LastUpdated был сериализован, когда я сериализую запись, хотя).
Сначала я попытался скрыть свойство 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 и с радостью продолжил свою сериализацию.
Есть ли способ сделать то, что я пытаюсь сделать?