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)

questionAnswers(2)

yourAnswerToTheQuestion