我通过网络接收一个XML字符串,我希望能够把一个对象中它的内容。当我把这个类的setter方法为public,它工作完全正常。不过,我希望能够保持他们私人的,在这种情况下,我得到以下错误:
System.InvalidOperationException:“无法反序列化类型‘MyApp.Random’,因为它包含了属性‘数据’它没有公开制定者。”
我期待所有在互联网上,还没有找到一个解决方案。
我的课很简单,就像这样:
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));