Я пытаюсь найти способ изменить поведение сериализации свойства.Переопределение свойства с атрибутом
Допустит, у меня есть такая ситуация:
[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 и с радостью занялся сериализацией.
Есть ли способ сделать то, что я пытаюсь сделать?
Как вы его сериализуете? Потому что, если вы используете двоичную сериализацию, атрибут XmlIgnore не принесет много пользы. –
Я использую XmlSerializer –
Вы должны использовать атрибут NonSerialized для двоичной сериализации. – snarf