实现 ISerialized 时,永远不会命中 GetObjectData() 方法

2024-02-20

XmlSerializer从不打电话GetObjcetData() on my ISerializable。什么时候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 序列化,请使用IXml可序列化 http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx instead

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现 ISerialized 时,永远不会命中 GetObjectData() 方法 的相关文章

随机推荐