Допустим у меня есть класс User, в классе User есть string? поле Country. При сериализации файла создаётся
<User>
<Country xsi:nil="true" />
</User>
Как сделать так чтобы данное поле не сериализовывалось,но при этом человек мог бы написать
<User>
<Country>America</Country>
</User>
и это могло бы десериализоваться
Если вам нужно только десериализовывать, но никогда не сериализовывать, то добавьте в свой класс метод
[XmlElement("Country")]
public string Country { get; set; }
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeCountry() => false;
Тогда он никогда не появится при сериализации, но заполнится при десериализации. Для того, чтобы свойство сериализовалось, если оно не пустое, проверяйте в этом методе Country на null
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeCountry() => !string.IsNullOrEmpty(Country);
Попробуй у себя в классе User пометить это поле следующим атрибутом:
public class User
{
[System.Xml.Serialization.XmlElement(IsNullable = true)]
public string Country{ get; set; }
//// ....
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости