1

是否可以使用 BinaryFormatter 序列化/反序列化方法来序列化和反序列化包含 UI 对象的类?我知道它可能不被推荐,只有数据真正应该被序列化,但有没有理由不支持它?

比如说,我有一个类,例如:

public class MyClass
{
    private List<UC1> _ucList1 = new List<UC1>();
    private List<UC2> _ucList2 = new List<UC2>();

    public MyClass() {}
}

在上述理论类中,UC1 和 UC2 属于 UserControl 类型 - 因此是用户控件列表。有没有理由不能反序列化?我做了一些测试,它似乎可以很好地序列化为字节数组,但是反序列化例程会引发异常“在解析完成之前遇到流结束”。

4

1 回答 1

0

不,您应该使用标准的组件序列化。二进制格式化程序将忽略例如扩展属性、仅设计属性,并且不会调用实现 ISupportInitialize 的组件的 BeginInit/EndInit。我不知道它会对代表(事件)做什么,可能它无法序列化它们。

最后,如果我记得很清楚,WinForms 中的所有类都没有用 Serializable 属性装饰

于 2013-10-09T16:52:40.307 回答