Я не знаю, почему я не могу найти быстрый быстрый поиск этого в Интернете, но мне было интересно, что такое отношения между десериализацией представления XML объекта и конструктора для этого объекта?отношения десериализации и конструктора
Я предполагаю, что использует конструктор по умолчанию. И если это так, он будет запускать код в конструкторе, но не обновлять сам объект после этого, чтобы отразить XML?
Вот немного больше контекста на то, что я имею в виду ...
У меня есть объект с двумя свойствами, которые на самом деле являются объектами, а:
public class Deployment
{
public AppPoolSettings AppPool { get; set; }
public WebSiteSettings Site { get; set; }
public Deployment()
{
//the object constructors below init their internal properties as well...
this.AppPool = new AppPoolSettings();
this.Site = new WebSiteSettings();
}
}
Проблемы В настоящее время я имею что в XML, свойство AppPool
может быть нулевым (скажем, если вы развертываете только пакет HTML). Процедура сериализации работает правильно, т. Е. Получившийся XML содержит только запись для сайта, а для AppPool - никакой записи.
Однако, когда я десериализую этот XML-объект, свойство AppPool моего объекта Deployment
всегда создается и инициализируется ... это не то, что говорит XML.
Я делаю что-то неправильно или это действительно просто из-за конструктора по умолчанию?
См Я бы ожидал, что десериализатор для выполнения задач в следующем порядке:
1- вызова по умолчанию конструктор
2- ли AppPool свойство существует в XML?
Да - > заполняющая,
Нет - > Установите в NULL
3- Существует ли свойство сайта в XML?
Да - > заполняющая,
Нет - > Установите в NULL
Почему он не делает этого?
если я это сделать, все мои звонки и ссылки на собственность в настоящее время есть проблемы ... 'System.Nullable не содержит определение имени , для Clone(), для ... всех свойств, которые я когда-либо называл «... есть ли способ обойти это? в противном случае я должен был бы прибегнуть к каждой отдельной ссылке или вызову, который я когда-либо делал в своем коде ... что ... LOT ... –
MaxOvrdrv
Отредактировал мой ответ. – cyberj0g
То, что я искал. Спасибо! :-) – MaxOvrdrv