C# 二进制格式化程序序列化用户控件

本文关键字:用户 控件 序列化 程序 二进制 格式化 | 更新日期: 2023-09-27 18:34:32

是否可以

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

例如,假设我有一个类,例如:

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

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

C# 二进制格式化程序序列化用户控件

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

最后,如果我记得不错,WinForms 中没有一个类是用可序列化属性修饰