当前位置:  开发笔记 > Android > 正文

ISerialization构造函数未被调用

如何解决《ISerialization构造函数未被调用》经验,为你挑选了1个好方法。

编辑:我的问题的解决方案是实现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进行反序列化

010

使用以下代码反序列化

serializer.Deserialize(new StringReader("010");

我想这会调用我的Serialization构造函数,但问题是永远不会被调用.

我使用上面发布的XML而不是这个

010

因为我从另一个应用程序发布了xml,所以我需要手动创建子对象并从构造函数中手动分配它的值.

我非常感谢您能为我提供的所有帮助和指导.



1> Jon Skeet..:

要自定义XML序列化,我相信你需要使用IXmlSerializable而不是ISerializable.

我认为这需要一个无参数的构造函数,然后你需要实现ReadXmlWriteXml.换句话说,它不使用与二进制序列化相同的构造函数.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有