【问题标题】:C# BinaryFormatter Serialize UserControlC# BinaryFormatter 序列化用户控件
【发布时间】:2013-10-09 16:43:19
【问题描述】:

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

比如说,我有一门课,比如:

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

    public MyClass() {}
}

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

【问题讨论】:

    标签: c# serialization deserialization binaryformatter


    【解决方案1】:

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

    最后,如果我没记错的话,WinForms 中的所有类都没有用 Serializable 属性修饰

    【讨论】:

    • 你说的“标准组件序列化”指的是什么?
    • 是System.ComponentModel、System.ComponentModel.Design、System.ComponentModel.Design.Serialization下的整个框架。例如看这个不错的示例项目support.microsoft.com/kb/813808它可以将winforms控件序列化为XML
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2012-08-12
    • 2013-09-23
    相关资源
    最近更新 更多