编辑:我的问题的解决方案是实现IXMLSerializer.感谢大家的快速回复.
大家好,我遇到了这个问题,我似乎找不到合适的解决方案.
我有以下课程
public class Child { private int _id; public int Id { get { return _id; } set { _id = value; } } } [Serializable] public class Test: ISerializable { private int _id; public int Id { get { return _id; } set { _id = value; } } private Child _child = new Child(); public Child Child { get { return _child; } set { _child = value; } } public Test() { } protected Test(SerializationInfo info, StreamingContext context) { if (info.MemberCount > 1) Child.Id = info.GetInt32("ChildId"); } #region ISerializable Members public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("ChildId", Child.Id); } #endregion }
如果我发送以下XML进行反序列化
0 10
使用以下代码反序列化
serializer.Deserialize(new StringReader(""); 0 10
我想这会调用我的Serialization构造函数,但问题是永远不会被调用.
我使用上面发布的XML而不是这个
0 10
因为我从另一个应用程序发布了xml,所以我需要手动创建子对象并从构造函数中手动分配它的值.
我非常感谢您能为我提供的所有帮助和指导.
要自定义XML序列化,我相信你需要使用IXmlSerializable
而不是ISerializable
.
我认为这需要一个无参数的构造函数,然后你需要实现ReadXml
和WriteXml
.换句话说,它不使用与二进制序列化相同的构造函数.