Во время де-сериализации, как игнорировать свойство? В моем случае я не хочу, чтобы свойство FullName
получило инициализацию вообще. Я не ищу решения [XMLIgnore]
- подумайте, что это сценарий, когда у меня нет доступа к изменению класса.C# Xml Deserialize, игнорировать данные в XML
Вот мой класс:
public class Person
{
public int Id { get; set; }
public string FullName { get; set; }
}
Вот как я инициализация:
Person p1 = new Person() { Id = 1, FullName = "P1" };
Person p2 = new Person() { Id = 2, FullName = "P2" };
List<Person> persons = new List<Person> { p, q }; //this object is xml serialized.
А вот мой XML: (я получил его, хотя в XML сериализации)
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Person>
<Id>1</Id>
<FullName>P1</FullName>
</Person>
<Person>
<Id>2</Id>
<FullName>P2</FullName>
</Person>
</ArrayOfPerson>
Очень грубое решение (если у вас слишком много свойств в вашем фактическом коде) было бы создание нового класса _temporary_, например. Person2, со всеми полями, кроме тех, которые вы хотите игнорировать. Используйте это для сериализации. При десериализации вы все равно можете использовать оригинальный класс. он просто оставит ваше игнорируемое значение равным нулю. Однако, если имя класса важно для вас в XML, это предложение не будет полезно. –
Это может помочь вам, если мое первое предложение этого не сделает. Игнорировать свойство во время сериализации xml, но не во время десериализации] (http://stackoverflow.com/a/18242538/6741868). Другим примером того же метода Override является [Игнорировать свойство при сериализации в XML] (http://stackoverflow.com/a/23121696/6741868) –
спасибо за ваши входы, но XMLAttributeOverrides помогает, когда имя элемента в xml отличное от имени свойства класса. – Sekhar