问题标签 [binary-serialization]

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 投票
1 回答
3323 浏览

vb.net - VB.NET 序列化错误

我正在尝试序列化我的 VB 解决方案中的主类。我在类的顶部添加了 Serializable 属性,如下所示:

我正在使用以下代码进行序列化:

当我调用此方法时,出现错误:

在程序集“System.Windows.Forms,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”中键入“System.Windows.Forms.Form”未标记为可序列化。

我猜这是因为您无法序列化附加到类或其他东西的表单,但我真的不知道我在做什么。

我可以以某种方式序列化我的 Form1 类中包含的所有对象,而不会出现此错误吗?我不想存储有关表单控件的任何数据,我只需要保存我在Form1类顶部定义的所有对象。

谢谢你的帮助。

0 投票
2 回答
2881 浏览

.net - .Net 中的客户二进制序列化程序示例

所以,我想实现自己的二进制序列化。我正在寻找一些例子来引导我朝着正确的方向前进。

另外,我最好制作自己的序列化程序类,还是只实现 ISerializable 并使用 BinarySerializer?如果我实现 Iserializable,是否可以解决 BinarySerializer 的程序集加载/版本依赖问题?

0 投票
3 回答
1413 浏览

c# - C#中的二进制序列化(真的,所见即所得的序列化)

(对于所见即所得,我的意思是决定写什么如何写,而不是微软或谷歌的某个人)(好吧......从技术上讲,我什么都不决定......几年前编程的人决定了,我只能问我要跳多高)

今天我觉得有点愚蠢,但我已经浪费了两个小时来寻找解决方案:-(。

现在...

我有一个二进制协议。它是基于 C 的,所以它就像查看一个 C 结构,其中定义了机器的字节序(幸运的是,它与“本地”字节序相同),定义了各种类型的大小,定义了数据结构对齐,结构的布局已定义,字符串是已知编码的固定字符数组......一切都已定义!unsafe struct当您使用时,一切都与 C# 非常相似,并且您对使用数组修饰符[(LayoutKind.Explicit)]不是很挑剔。fixed现在我需要在 C# 中对其进行序列化/反序列化...我环顾四周,但找不到任何东西...我错过了什么?在你问之前,我知道BinaryFormatter,但它对我来说还不够 WYSIWYG ......BinaryFormatter实现了它的格式化语言。是的,我知道BitConverter(事实上​​它没有实现大端的转换器),但它不是一个“完整的”解决方案。它只是“基础”仪器。而且我知道BinaryWriter/ BinaryReader,但是它们似乎不支持不支持的数组,byte[]或者char[]它们似乎无法在写入时“填充”数组(您有一个 5 元素byte[]数组,您需要编写它作为 10 个元素byte[]的数组,因为您使用的格式需要它...您必须编写代码行来执行此操作)

计划 B(甚至可能是计划 Z)是unsafe struct为每个类创建一个影子,一个IWysiwygSerializable具有两个方法(ReadWrite)的接口并在每个类中实现接口(写入将填充unsafe struct并写入输出流,读取将做相反的事情)(或者我什至可以BitConverter在不使用的情况下直接做几十个Read,但对于数组来说有点困难)Writestruct

谢谢!

0 投票
3 回答
1369 浏览

silverlight - 适用于 Windows Phone 7 的快速而全面的二进制序列化框架

我正在寻找一个快速二进制序列化框架以在 Windows Phone 7 中用于我从 Windows Mobile 6.5 迁移的项目 Protobuf-net 在 WM6.5 中工作得很好,但它仍然远离 WP7 的黄金时间,所以我想知道如果有人同时知道一个好的选择。

我需要一个支持序列化各种类型的框架:自定义类型、自定义类型的数组、自定义类型的集合、内置类型、框架中的可序列化类型等。

我找到了一对,但它们并没有比 DataContractSerialization 快多少(但肯定更紧凑)。到目前为止我已经尝试过:

Mike Talbot 的 Silverlight 序列化器:http ://whydoidoit.com/silverlight-serializer/

Silverlight 的 Alt 序列化程序:http: //slseralizelzo.codeplex.com/

Alt 的性能更好,但严重依赖反射并且不像其完整的框架对应物那样编译序列化程序,但两者都通过了我的第一个相对复杂类型的基本测试。

还有其他我可以尝试的序列化框架吗?我很乐意衡量他们的表现并分享我的发现。

0 投票
1 回答
507 浏览

c# - 序列化类似枚举的对象

我正在使用二进制序列化(使用 BinaryFormatter 等)来序列化对象图。在这些对象中,有些对象具有类似于枚举的某种类型的字段,除了具有其他属性和方法。

每次反序列化这个类似枚举的对象时,都会创建该类型的新实例的问题。是否有某种特殊的反序列化方法允许您返回一组现有对象中的一个,而不是创建一个全新的对象?

我听说过针对包含类枚举对象的每种类型执行此操作的方法,但我宁愿这样做,以便任何包含类枚举对象的类都会通过查看类枚举类型的现有对象来自动反序列化它.

(为什么我想要这个,以防万一

  1. 相等变得更容易,我可以只使用默认的引用比较运算符,而不必重写 Equals、GetHashCode、== 和 != 并实现 IEquatable。

  2. 类枚举对象中的某些数据可能会发生变化,我希望序列化数据无需大量代码即可更新为新数据。(请注意,类枚举对象中有一个永远不会改变的字段。))

0 投票
2 回答
3920 浏览

c# - 通过 Tcp/IP 将客户端数据队列发送到服务器端

我想将数据从客户端发送到服务器。有两个队列。在客户端和服务器端。我希望我的客户端连接到服务器并将客户端队列中的所有数据发送到服务器。在服务器端,我想接受所有客户端并获取所有对象并添加到服务器端队列

客户端代码:

服务器端 :

我知道上面的代码不起作用。我只是想画出我的设计。有人可以把代码示例发给我吗。如何将客户端队列发送到服务器队列..

谢谢..

0 投票
0 回答
454 浏览

.net - SerializationException 找不到程序集

我需要知道是否可以序列化 AssemblyA.MyType 类型的对象并将文件反序列化为 AssemblyB.MyType 类型。这两种类型是相同的,唯一的区别是它的存储位置(AssemblyA 和 AssemblyB)。

我的场景: AssemblyA 由可执行文件ExeA使用,这需要很多类型和函数。AssemblyB 是ExeB的用户,只需要 MyType (并且不能包含 AssemblyA 上的任何其他引用)

我想如果我创建包含 MyType 的第三个程序集 (AssemblyC),我会从 AssemblyA 和 AssemblyB 中删除 MyType,并将引用 AssemblyC 添加到我的两个项目中。但是可以使用不同的类型进行序列化和反序列化吗?

我正在使用网络 2.0

谢谢你。

0 投票
4 回答
106 浏览

c# - 自定义结构,使其序列化为 Int32

我使用二进制序列化保存数据。现在我已经将程序中的一个字段从 Int32 更改为一个结构。但我仍然想将该字段保存为 Int32 以向后兼容。我怎么做?

背景信息 我的程序是从 Delphi 移植过来的,使用了很多数组。问题是Delphi中的列表是从1开始计数的,在我现在用C#开发的时候,vilkort让跟踪索引变得很困难。所以我使用了一个struct来更容易处理从1开始的索引基于 0 的数组,直到我纠正了整个程序。

编码

0 投票
5 回答
413 浏览

c++ - 执行二进制序列化时删除字符串流结果的常量是否安全?

我有一种情况,我正在执行一些项目的二进制序列化,并将它们写入一个不透明的字节缓冲区:

从结果中删除const-nessss.str().c_str()然后将其分配给缓冲区是否安全?reinterpret_castunsigned char*

注意:代码只是为了让您了解我在做什么,它不一定编译。

0 投票
1 回答
3420 浏览

c# - 将 byte[] 反序列化回 DataTable

我有以下代码来序列化/反序列化 DataTable:

serialize 方法工作正常,但反序列化方法会产生此错误:

我有 99% 的把握在过去使用过这种方法,但不知道出了什么问题。