微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – GetObjectData()方法在实现ISerializable时永远不会被打

XmlSerializer从不在我的ISerializable上调用GetobjcetData().什么时候调用GetobjectData()?谢谢!
class Program
{
  static void Main(string[] args)
  {
    var thing = new Thing { Name = "Dude",Id = 1 };
    var xmlSerializer = new XmlSerializer(typeof(Thing));

    var sw = new StringWriter();
    xmlSerializer.Serialize(sw,foo);
    var serializedXml = sw.ToString();

    var sr = new StringReader(serializedXml);
    var result = (Thing)xmlSerializer.Deserialize(sr);
  }        
}

public class Thing : ISerializable
{
  public string Name { get; set; }
  public int Id { get; set; }

  public Thing() { }        
  public Thing(SerializationInfo info,StreamingContext context) { }

  public void GetobjectData(SerializationInfo info,StreamingContext context)
  {
    // Breakpoint placed on the following line never gets hit:
    throw new NotImplementedException();
  }
}

解决方法

XmlSerializer不调用GetobjectData.二进制和肥皂做.
如果要管理xml序列化,请改用 IXmlSerializable

原文地址:https://www.jb51.cc/csharp/95866.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐