不使用 BinaryFormatter 将 .NET 对象序列化为 Binary

问题描述

我在一个 .NET Framework 项目中,我们目前正在使用 BinaryFormatter。我们想过渡到 .NET 5,为此我们需要远离 BinaryFormatter(因为它已经过时并且有安全问题)但我们想坚持二进制序列化(小文件大小,快速,不可读,等)。

没有一个预装的二进制序列化库(MessagePack、protoBuf 等)能够满足我们的需求,所以我一直在自己编写一个二进制序列化类。它做了很多 BinaryFormatter 不能做的事情(出于安全原因,不会在二进制文件中对程序集限定的类型名称进行编码,允许在没有反序列化绑定器的情况下重命名类和命名空间等),但是有一个问题。

自定义类型、基本类型和结构的序列化很容易。序列化通过使用我自己的自定义属性和可序列化类的接口来实现。

但是对于像 List、Dictionary 等框架类......我无法将属性或接口附加到 .NET 类。有没有办法可以编写通用代码来序列化这些类型,包括泛型?

例如,如果我有

Dictionary<int,MySerializableClass> myDictionary;

我希望能够只写

Save(myDictionary);

无需为所有类型或泛型类型组合(Dictionary 等为列表、哈希集等实现大量专用方法

有什么想法吗?是我在每种类型的基础上或使用扩展方法实现这些的唯一选择,还是我可以采取其他一些方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...