C # обойти XmlSerializer. Реализовать ловушку? - PullRequest
0 голосов
/ 22 ноября 2008

Мне просто интересно, есть ли какие-нибудь хорошие обходные пути для десериализации частных полей / свойств с использованием XmlSerializer.Deserialize ()?

В настоящее время я десериализирую свой XML в простой одноразовый тип со всеми общедоступными свойствами, затем загружаю сложный тип, который имеет частные свойства, например:

ComplexType complex = new ComplexType(SimpleType);

и конструктор ComplexType выглядит следующим образом:

public ComplexType(SimpleType simpleType){
    this.Property1 = simpleType.Property1;
    this.Property2 = simpleType.Property2;
    .....

}

У кого-нибудь есть лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 23 ноября 2008

Обратите внимание, что другим вариантом является использование DataContractSerializer (.NET 3.0) - это поддерживает сериализацию закрытых членов (свойств или полей).

1 голос
/ 22 ноября 2008

Вы можете использовать ComplexType для реализации интерфейса IXmlSerializable. Это предоставляет методы для сериализации и десериализации, поэтому вы можете заполнить закрытые члены complextype в этих методах.

Проверьте MSDN здесь: http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx для примера, показывающего реализацию интерфейса IXmlSerializable, который сериализует приватное поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...