如何将Xml字符串反序列化为具有带有专用设置程序属性的对象?

时间:2019-02-07 12:29:44

标签: c# xml xml-serialization

我正在通过网络接收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 :(得分:0)

解决了。我只是使用了DataContractSerializer而不是XmlSerializer,它就像一个魅力。解决方法如下:

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