如何将 Xml 字符串反序列化为具有私有 setter 属性的对象?
How to deserialize an Xml String into an object that has properties with private setters?
我正在通过网络接收一个 Xml 字符串,我希望能够将它的内容放入一个对象中。当我将 class 的 setter 保留为 public 时,它工作得很好。但是,我希望能够将它们保密,在这种情况下我会收到以下错误:
System.InvalidOperationException: 'Cannot deserialize type 'MyApp.Random' because it contains property 'data' which has no public setter.'
我在网上找遍了,还没找到解决办法。
我的class很简单,像这样:
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 字符串,我希望能够将它的内容放入一个对象中。当我将 class 的 setter 保留为 public 时,它工作得很好。但是,我希望能够将它们保密,在这种情况下我会收到以下错误:
System.InvalidOperationException: 'Cannot deserialize type 'MyApp.Random' because it contains property 'data' which has no public setter.'
我在网上找遍了,还没找到解决办法。
我的class很简单,像这样:
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));