C# 如何将Xml字符串反序列化为具有私有setter属性的对象?

C# 如何将Xml字符串反序列化为具有私有setter属性的对象?,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我通过网络接收到一个Xml字符串,我希望能够将它的内容放在一个对象中。当我将这个类的setter保持为公共的时候,它工作得非常好。但是,我希望能够将它们保密,在这种情况下,我会得到以下错误: System.InvalidOperationException:'无法反序列化类型'MyApp.Random',因为它包含没有公共setter的属性'data' 我在互联网上到处找,没有找到解决办法 我的课很简单,像这样: public class Random { public string d

我通过网络接收到一个Xml字符串,我希望能够将它的内容放在一个对象中。当我将这个类的setter保持为公共的时候,它工作得非常好。但是,我希望能够将它们保密,在这种情况下,我会得到以下错误:

System.InvalidOperationException:'无法反序列化类型'MyApp.Random',因为它包含没有公共setter的属性'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));

修好了。我只是使用了DataContractSerializer而不是XmlSerializer,它工作起来很有魅力。以下是解决方案:

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

我已经读过很多文章,提到xml序列化程序确实需要公共setter,但我想知道是否有办法绕过这一点。