我要序列化存储一个对象,该对象包含很多属性,都可以序列化存储,但是在我添加一个句柄类型的属性后就不能序列化了,出异常说反射对象不成功.
求解决方法    [Serializable]
    public class textXML
    {
        public int ID;
        public string name;
        public string age;
        public string key;        Size videoSize = new Size(640, 480);
        public Size VideoSize
        {
            get { return videoSize; }
            set { videoSize = value; }
        }
        //上面的都可以        private IntPtr previewWndHandle;
        /// <summary>
        /// 设置窗口句柄,而不可从配置文件中加载,加载序列化就出问题,为什么
        /// </summary>
        public IntPtr PreviewWndHandle
        {
            get { return previewWndHandle; }
            set { previewWndHandle = value; }
        }
 }

解决方案 »

  1.   

    序列化句柄没意义把..
    你把句柄1000保存了~~然后再读出来1000 ~~可句柄会根据程序退出或则重新加载什么的会变的..如果强制序列话
      private int previewWndHandle;
            /// <summary>
            /// 设置窗口句柄,而不可从配置文件中加载,加载序列化就出问题,为什么
            /// </summary>
            public IntPtr PreviewWndHandle
            {
                get { return new IntPtr(previewWndHandle); }
                set { previewWndHandle = value.ToInt32(); }
            }
      

  2.   


    我的意思是想让窗口句柄不序列化,只序列化其他的属性,
    但是我用
             [NonSerialized] public IntPtr PreviewWndHandle
            {
                get { return previewWndHandle; }
                set { previewWndHandle = value; }
            }
    就编译报错,说对这样属性不能使用NoSerialized, 晕
      

  3.   

    [NonSerialized]
    private IntPtr previewWndHandle;不是属性上`~
      

  4.   

    我发现一个方法,用XmlIgnore是可行的,但是不知道会不会早成其他的负面影响.哈哈
            [XmlIgnore] private IntPtr previewWndHandle;
            /// <summary>
            /// 初始化摄像头时设置窗口句柄,而不可从配置文件中加载
            /// </summary>
           [XmlIgnore] public IntPtr PreviewWndHandle
            {
                get { return previewWndHandle; }
                set { previewWndHandle = value; }
            }