c# - 二进制格式化程序 - 类型 UserControl 未标记为可序列化

标签 c# serialization

我正在尝试使用 BinaryFormatter 序列化我的对象:

private UserSettings _userSettings;
var serializer = new BinaryFormatter();
using (var file = new FileStream(@"D:\test.bin", FileMode.Create))
{
    serializer.Serialize(file, _userSettings);
}

但是我遇到了一个奇怪的异常:

Type 'MyCustomUserControl' in Assembly 'xxx' is not marked as serializable.

UserSettings 类没有对 MyCustomUserControl 的任何引用,但它被 MyCustomUserControl 引用。

最佳答案

对控件的引用可以隐藏在事件中。如果您的 UserSettings 类实现了控件订阅的事件,请将 [field:NonSerialized] 属性添加到该事件:

[field:NonSerialized]
public event PropertyChangedEventHandler PropertyChanged;

关于c# - 二进制格式化程序 - 类型 UserControl 未标记为可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40913641/

相关文章:

c# - Web 服务无法序列化接口(interface)

serialization - 具有多对多的 MVC 4 模型会产生错误对象图类型包含循环且无法序列化

java - Java 和 Python 之间的 XML 序列化库互操作性

javascript - 如何在 C# Selenium 中向 FirefoxDriverService 添加配置文件规范?

c# - 我可以使用 outlook 2003 interop 读取 .msg 文件及其嵌入图像吗

c# - Azure 云服务

c# - xml列表反序列化只取一个元素

c# - 如何在 C# 中压缩具有相似文件名的多个文件

c# - 带有绑定(bind)的 MVVM 菜单栏

java - Java中的部分反序列化和序列化?