Мне просто было интересно, есть ли какие-нибудь хорошие обходные пути для десериализации частных полей / свойств с помощью XmlSerializer.Deserialize ()?
В настоящее время я десериализую свой XML в простой одноразовый тип со всеми общедоступными свойствами, затем загружаю сложный тип с такими частными свойствами:
ComplexType complex = new ComplexType(SimpleType);
а конструктор ComplexType выглядит так:
public ComplexType(SimpleType simpleType){
this.Property1 = simpleType.Property1;
this.Property2 = simpleType.Property2;
.....
}
У кого-нибудь есть лучший способ сделать это?





Вы можете сделать так, чтобы ComplexType реализовал интерфейс IXmlSerializable. Это предоставляет методы для сериализации и десериализации, поэтому вы можете заполнить частные члены complextype в этих методах.
Ознакомьтесь с MSDN здесь: http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx для примера, показывающего реализацию интерфейса IXmlSerializable, который сериализует частное поле.
Обратите внимание, что другой вариант - использовать DataContractSerializer (.NET 3.0) - он поддерживает сериализацию частных членов (свойств или полей).