Ignoruj właściwość podczas serializacji xml, ale nie podczas deserializacji
W języku C #, w jaki sposób zrobić XmlSerializer ignorować właściwość podczas serializacji, ale nie podczas deserializacji? (Lub jak zrobić to samo z Json.net?)
Aby zapobiec szeregowaniu właściwości, możesz dodaćXmlIgnore
atrybut:
[XmlIgnore]
public int FooBar {get;set;}
Spowoduje to<FooBar>
znacznik do pominięcia podczas serializacji.
Oznacza to jednak również, że<FooBar>
tag zostanie zignorowany podczas deserializacji.
W moim przypadku akceptuję tablicę elementów od użytkownika w żądaniu, a dla każdego użytkownika elementu można określić właściwość akcji, jeśli chcą dodać, zmodyfikować lub usunąć element. Chcę użyć tego samego obiektu modelu dla wywołań listy GET i nie chcę zwracać tej właściwości akcji. Spodziewam się, że będzie to dość powszechny przypadek.
Inny przypadek użycia: powiedzmy, że masz obiekt okręgu
public class Circle
{
public double Radius { get; set; }
}
i zmodyfikujesz go, aby dodać właściwość średnicy
public class Circle2
{
public double Diameter { get; set; }
public double Radius { get { return Diameter / 2; } set { Diameter = value*2; } }
}
Możesz chcieć serializować tylko średnicę, ale nadal możesz deserializować pliki xml w starym formacie, który zawiera tylko promień.
Przeprowadziłem badania i niczego nie znalazłem, stąd to pytanie
Rozwiązanie: Zrozumiałem rozwiązanie. Mogę dodać właściwość ShouldSerialize, która zawsze zwraca false, szczegóły wta dokumentacja MSDN
(rozwiązanie to można dodać jako rzeczywistą odpowiedź, jeśli to pytanie zostanie ponownie otwarte)