Как десериализовать строку XML в объект, который имеет свойства с частными установщиками? - PullRequest
0 голосов
/ 07 февраля 2019

Я получаю строку XML по сети, и я хочу иметь возможность поместить ее содержимое в объект.Когда я устанавливаю сеттеры класса как общедоступные, они работают совершенно нормально.Однако я хочу иметь возможность сохранять их закрытыми, и в этом случае я получаю следующую ошибку:

System.InvalidOperationException: «Невозможно десериализовать тип« MyApp.Random », поскольку он содержит свойство« data »у которого нет общедоступного сеттера. '

Я просмотрел весь интернет и не нашел решения.

Мой класс очень прост, например:

public class Random
{
    public string data{ get;  private set; }

    public string abc{ get;  private set; }

    public string defg{ get;  private set; }
}

Вот как я пытаюсь десериализовать это:

var serializer = new XmlSerializer(typeof(Random));

result = (Random)serializer.Deserialize(new StringReader(xmlString));

1 Ответ

0 голосов
/ 08 февраля 2019

Исправлено.Я просто использовал DataContractSerializer вместо XmlSerializer, и он работал как шарм.Вот решение:

var ser = new DataContractSerializer(typeof(Random));
Random result = (Random)ser.ReadObject(new MemoryStream(xmlString));
...