У меня был класс, который выглядел какдесериализации «старый» XML в новый экземпляр класса
public class MyClass
{
public string EmployerName;
public string EmployerSurname;
public string EmploeeName;
public string EmploeeSurname;
}
Я переработан код выше этого:
public class MyClass
{
public MyClass()
{
Employer = new PersonInfo();
Emploee = new PersonInfo();
}
public class PersonInfo
{
public string Name;
public string Surname;
}
public PersonInfo Emploee;
public PersonInfo Employer;
[Obsolete]
public string EmploeeName
{
get
{
return Emploee.Name;
}
set
{
Emploee.Name = value;
}
}
[Obsolete]
public string EmploeeSurname
{
get
{
return Emploee.Surname;
}
set
{
Emploee.Surname= value;
}
}
[Obsolete]
public string EmployerName
{
get
{
return Employer.Name;
}
set
{
Employer.Name = value;
}
}
[Obsolete]
public string EmployerSurname
{
get
{
return Employer.Surname;
}
set
{
Employer.Surname = value;
}
}
Проблема заключается в том, что при десериализуя XML, которые были сериализованы из старой версии класса, я надеялся, что новые свойства будут работать, а поля внутренних объектов будут заполнены, но они этого не делают.
Любые идеи о том, как, помимо реализации IXmlSerializable, я мог бы изменить новый класс для поддержки как новых, так и старых версий XML? Или, может быть, IXmlSerializable - единственный способ?