В С#, как я могу заставить XmlSerializer игнорировать свойство во время сериализации, но не во время десериализации? (Или как мне сделать то же самое с Json.net?)
Чтобы предотвратить сериализацию свойства, вы можете добавить атрибут XmlIgnore
:
[XmlIgnore]
public int FooBar {get;set;}
Это приведет к тому, что тег <FooBar>
будет опущен во время сериализации.
Однако это также означает, что тег <FooBar>
будет игнорироваться во время десериализации.
В моем случае я принимаю массив элементов от пользователя в запросе, и для каждого элемента пользователь может указать свойство действия, если он хочет добавить, изменить или удалить элемент. Я хочу использовать один и тот же объект модели для вызовов списка GET и не хочу возвращать это свойство действия. Я ожидаю, что это будет довольно распространенный случай.
Другой вариант использования: скажем, у вас есть объект окружности
public class Circle
{
public double Radius { get; set; }
}
и вы измените его, чтобы добавить свойство диаметра
public class Circle2
{
public double Diameter { get; set; }
public double Radius { get { return Diameter / 2; } set { Diameter = value*2; } }
}
Вы можете сериализовать только диаметр, но все же сможете десериализовать xml файлы в старом формате, который содержит только радиус.
Я сделал свое исследование и ничего не нашел, поэтому этот вопрос
Решение. Я понял решение. Я могу добавить свойство ShouldSerialize, которое всегда возвращает false, подробности в этой документации MSDN
(это решение можно было бы добавить в качестве фактического ответа, если этот вопрос будет вновь открыт)