using ISerializable to control serialization and deserialization

[Serializable]
    public class OuterClass : ISerializable
    {
        public OuterClass()
        {
        }

        private OuterClass(SerializationInfo info, StreamingContext context)
        {
            MyField = info.GetString("MyField");
            Inner = (InnerClass)info.GetValue("Inner"typeof(InnerClass));
        }

        #region ISerializable Members

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("MyField", MyField);
            info.AddValue("Inner",Inner);
        }

        #endregion

        public string MyField { getset; }

        public InnerClass Inner { getset; }
    }

    [Serializable]
    public class InnerClass : ISerializable
    {
        public InnerClass()
        {
        }

        private InnerClass(SerializationInfo info, StreamingContext context)
        {
            MyField = info.GetString("MyField");
        }

        #region ISerializable Members

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("MyField", MyField);

        }

        #endregion

        public string MyField { getset; }
    }

posted on 2012-03-05 09:41  shcity  阅读(180)  评论(0编辑  收藏  举报

导航