你这样理解把...你序列化要找到没个成员的值.非引用..如果找不到..就异常.. 例如 public class Test { public int a; public Button C; }当序列化Test的时候 a是可以序列化的 a为值类型.. 然后我们去序列化C的时候 我们系列话到C.Text--String.是个引用.那我们继续..最后我们找到了Text的值char[]类型的..下一个 Handle 是一个句柄(内存地址) 我们可以看成int来序列化 这样一直找下去.找到的可能有些内存是系统保护的,不是你当前进程可以访问的.就失败了. 而且这一路下去,所有的类还都要可以被序列化的标记.
例如 控件的父容器--父容器--可能就到桌面了. .
这些内存是系统使用.而非你程序使用.如果不去序列化这些内存.你的控件又是一个不合法的控件.
数据结构不向外公开
只给你handle用以访问
例如
public class Test
{
public int a;
public Button C;
}当序列化Test的时候 a是可以序列化的 a为值类型.. 然后我们去序列化C的时候 我们系列话到C.Text--String.是个引用.那我们继续..最后我们找到了Text的值char[]类型的..下一个 Handle 是一个句柄(内存地址) 我们可以看成int来序列化 这样一直找下去.找到的可能有些内存是系统保护的,不是你当前进程可以访问的.就失败了.
而且这一路下去,所有的类还都要可以被序列化的标记.
要怎么知道继承于WIN32的Control的方法?怎么查看。
zgke朋友是否想说:建议你还是贴个新贴来问这些问题吧。
第1个方案反射你需要的属性..例如你先反射属性获取那些是在哪个 属性窗上显示的..否反射出来.保存下来.(事件)这个需要直接保存类名和方法名
第2个 IDE有个方法好能序列化成代码.然后序列化回来的方法.你找找把.