Próbuję znaleźć sposób na zmianę zachowania serializacji właściwości.Przesłanianie właściwości za pomocą atrybutu
Powiedzmy mam takiej sytuacji:
[Serializable]
public class Record
{
public DateTime LastUpdated {get; set; }
// other useful properties ...
}
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
// other useful properties ...
}
Teraz chcę serializacji EmployeeRecord. Nie chcę, aby właściwość LastUpdated z klasy Record była serializowana. (Chcę, aby LastUpdated był serializowany, gdy serializuję Record)).
Najpierw próbowałem ukrywanie właściwość LastUpdated za pomocą słowa kluczowego nowy a następnie dodając atrybut XmlIgnore:
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
[XmlIgnore]
public new DateTime LastUpdated {get; set; }
// other useful properties ...
}
Ale to nie działa. Potem próbowałem podejmowania podstawa LastUpdated wirtualne i przesłanianie go, utrzymując atrybut:
[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 ...
}
to nie działało. W obu próbach LastUpdated zignorował atrybut XmlIgnore i szczęśliwie przeszedł operację serializacji.
Czy istnieje sposób, aby to, co próbuję, miało miejsce?
Jak serializujesz? Ponieważ jeśli używasz serializacji binarnej, atrybut XmlIgnore nie przyniesie wiele dobrego. –
Używam XmlSerializer –
Można użyć atrybutu NonSerialized do serializacji binarnej. – snarf