问题标签 [binaryformatter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
18474 浏览

.net - Binary Deserialization with different assembly version

I have a project which uses BinaryFormatter to serialize a collection of structs with string and bool? datatypes.

The serialization/deserialization works fine, however if I were to change the assembly which does the work it fails to deserialize because of the header in the binary file indicating that it requires Assembly x instead of Assembly y to handle the data.

Is it possible to setup the serialization/deserialization to be assembly agnostic?

0 投票
2 回答
4312 浏览

c# - 字节序列化

我最近与一位同事讨论了通过网络对字节数据进行序列化的问题。他使用BinaryFormatter该类“解析”我发送给他的字节数据。这不起作用,他显然有特殊的......例外。Binaryformatter无法正确“解析”数据,因为我的数据只是一个字节数组。

他的动机BinaryFormatter是平台独立性。我不相信这样的立场。当我们都使用BinaryReaderorBinaryWriter时,事情在代码领域运行良好。

因此,BinaryFormatter我应该在需要通过线路发送字节的每个场景中使用它吗?

0 投票
1 回答
3526 浏览

c# - 序列化对象时如何忽略事件订阅者?

当使用 a 序列化以下类时BinaryFormatter,订阅该Roar事件的任何对象也将被序列化,因为对这些对象的引用由 EventHandler 委托持有。

您将如何阻止事件订阅者被序列化为以 Lion 开头的对象图的一部分?

[NonSerializable]属性放在event不会编译。


注意:我正在回答我自己的问题,因为我认为在网站上提供这些信息可能会很有用!

常见问题解答:问和回答你自己的问题也很好,但假装你在危险中:以问题的形式表达它。

0 投票
2 回答
4881 浏览

c# - BinaryFormatter 是否应用任何压缩?

当.NETBinaryFormatter用于序列化对象图时,是否应用了任何类型的压缩?

我问我是否应该担心对象图有许多重复的字符串和整数。

编辑- 等一下,如果字符串是在 .NET 中实习的,就不必担心重复的字符串,对吧?

0 投票
1 回答
1298 浏览

c# - 卡在 C# 中的序列化

我有一个在 C# 中处理序列化的类,称为 Serializer。它的实现如下:

非常简单的东西,它适用于我所有的单元测试。RulesManager 已正确序列化和反序列化,因此我知道图表很好。

麻烦来自以下代码:

该函数是 Manager 类的一部分。Manager 类在 MainForm 上实例化。MainForm 使用 SaveFileDialog 提示用户输入他们想要保存到的文件名和位置,然后进行以下调用:

从而调用上面的函数。当它这样做时,我在 binaryFormatter.Serialize(stream, rulesManager) 行的 Serialize.SerializeRulesManager 中得到以下异常:

在程序集“TestHarness,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”中键入“TestHarness.MainForm”未标记为可序列化。

为什么 MainForm 需要标记为可序列化?只是为了好玩,我将 Serializable 属性放在 MainForm 上,它只是将异常上移了一级,表明 Windows.Form 未标记为可序列化。是什么赋予了?

0 投票
6 回答
6371 浏览

c# - 如何提高反序列化速度?

使用 BinaryFormatter 进行序列化/反序列化,生成的序列化文件大小约为 80MB。反序列化需要几分钟。我该如何改进呢?下面是反序列化代码:

也许在反序列化之前将所有内容读入内存或使用其他一些序列化技术?

0 投票
1 回答
891 浏览

c# - 如何反序列化或恢复未完成序列化的二进制序列化字典?

当我使用我的应用程序时,它试图序列化一个 300 KB 的字典。由于没有磁盘空间,它只能写入 292 KB。有没有办法成功反序列化其中的任何内容?

我使用了 BinaryFormatter,如果我丢失了一些元素,那比丢失整个字典要好得多。

当我反序列化时,我得到了这个异常:

0 投票
4 回答
2108 浏览

c# - 如何在 C# 中使用 BinaryFormatter 更改反序列化的顺序?

假设我有包含 classB 的 classA,并且两者都是 [Serializable]。

我假设,在反序列化 classB 将首先反序列化。

然而,情况并非如此,因为我可以通过在每个 [OnDeserialized] 方法被命中时记录来确认。

现在我有以下问题:

在 classA 的反序列化完成后,它应该使用 classB 中的值进行自我设置。不幸的是,此时 classB 尚未反序列化,因此 classA 设置错误。

如果我可以强制 BinaryFormatter 在 classA 之前反序列化 classB,或者从下到上而不是从上到下解析对象图,我的问题就会得到解决。

另一个明显的解决方案是让 classB 在反序列化时触发一个事件,然后让 classA 自行设置,但我想远离这种不优雅的解决方法。

因此,如果有人知道更好的解决方案,我将不胜感激。

0 投票
3 回答
14122 浏览

.net - BinaryFormatter 替代品

BinaryFormatter 序列化的 128³ 双倍数组,占用 50 MB 空间。序列化具有两个双字段的 128³ struct数组需要 150 MB 和超过 20 秒的处理时间。

是否有可以生成紧凑文件的快速简单替代方案?我的期望是上述示例将分别占用 16 和 32 MB,并且在两秒内处理。我看了一下 protobuf-net,但似乎它甚至不支持结构数组。

PS:我很抱歉在记录文件大小时犯了错误。BinaryFormatter 的实际空间开销并不大。

0 投票
6 回答
76488 浏览

c# - C# 对象二进制序列化

我想对对象进行二进制序列化,并将结果保存在数据库中。

如何将内存流转换为字符串类型以保存在数据库中,然后才能反序列化对象?