问题标签 [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 投票
1 回答
1708 浏览

c# - binaryformatter 如何序列化对象?

BinaryFormatter在我的代码中以奇怪的方式表现。我有如下代码

在某些机器(32 位或 64 位机器)中,它以二进制格式序列化 - 这是预期的。但是在某些机器上(它们都是 64 位机器,不用于调试版本)它没有序列化,binarySerializedLog而是显示ToString()所有个体的值Data、类名 ( ...LogEntry) 和id值。我的问题是——这种行为有具体原因还是我做错了什么?提前致谢。

0 投票
5 回答
132 浏览

.net - IFormatter 可以反序列化未引用类型的对象吗?

假设我用BinaryFormatter. 不引用此库的程序集尝试反序列化字节。它会起作用吗?

我不希望它被转换为正确的类型,我只想将它作为一个object实例检索,以便我可以对它进行分组并再次序列化它。

0 投票
1 回答
4301 浏览

c# - 二进制流“NN”不包含有效的 BinaryHeader

我通过套接字传递用户定义的类。SendObject 代码如下。它可以在我的本地机器上运行,但是当我发布到 WebServer 时,它正在与我自己机器上的 App Server 进行通信,它失败了。

如果它是我的工具项目中的一个类,而另一个关于 UserData 的类只是不想知道,我可以做到这一点。令人沮丧!

哦。我认为这是因为 UserData 类里面有一个 DataSet 。有趣的是,我已经看到了这项工作,但是在 1 个请求之后它变得循环,我无法让它再次工作。

有谁知道这可能是为什么?我已经查看了比较 dll 以确保它们在 WebServer 和我的本地计算机上是相同的,并且它们看起来是这样的,因为我在 AssemblyInfo.cs 中打开了版本控制以进行仔细检查。

可能的原因是无效的流或序列化和反序列化之间的对象版本更改。


编辑

好的,问题似乎出在大小上。如果我将它保持在 1024 字节以下(我在这里猜)它可以在 Web 服务器上运行,并且如果它里面有一个 DataSet 则不能。k 事实上,这太令人费解了,我使用 ds.GetXml 将 DataSet 转换为字符串( ) 这也导致它爆炸。:( 因此,在整个网络中,我的套接字似乎是错误的,并且不想读取数据。

0 投票
1 回答
3886 浏览

.net - .Net 哪里可以找到 BinaryFormatter 序列化格式的官方规范?

我想知道 BinaryFormatter 的序列化格式是什么。我发现这个网站提供了一些很好的信息,但它是通过逆向工程获得的,并不完整。

在哪里可以找到 BinaryFormatter 序列化格式的官方规范?

0 投票
6 回答
15917 浏览

.net - BinaryFormatter 反序列化给出 SerializationException

我得到一个:

System.Runtime.Serialization.SerializationException:找不到程序集'myNameSpace,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken = null

当试图反序列化另一个程序中的某些数据而不是我序列化它的程序时。

经过一番谷歌搜索后,我发现显然这只能使用共享程序集来完成。

但是,我的数据库中充满了这个序列化的对象,我需要一个实用程序来将它们取出。有没有办法覆盖这种行为,只是给它提供完全相同的类并强制它反序列化?


我已经找到了这个片段,但我不明白我应该如何以及在哪里放置/使用它。

0 投票
2 回答
4461 浏览

c# - 通过套接字发送大型序列化对象仅在尝试增加字节数组时失败,但在使用大量字节数组时可以

我有代码,我试图在通过套接字接收数据时增加字节数组。这是错误的。

错误:mscorlibError:输入流不是有效的二进制格式。起始内容(以字节为单位)为:68-61-73-43-68-61-6E-67-65-73-3D-22-69-6E-73-65-72 ...

然而,当我只是作弊并使用 MASSIVE 缓冲区大小时,它很好。

这真是要了我的命。我不知道为什么它不起作用。我也从这里的建议中取消了组合,所以我很确定这没有做错事?

我希望有人能指出我哪里出错了

0 投票
3 回答
5611 浏览

c# - 为什么 BinaryFormatter 试图在 Serializable 类上序列化事件?

我有一个标记为可序列化的简单类,它恰好有一个事件。我试图将事件成员标记为 NonSerialized,但是编译器抱怨。然而,当我去序列化类实例时,BinaryFormatter 会引发事件不可序列化的异常。这是否意味着您不能序列化具有事件的类?如果是这样,那么编译器应该提前说出来。

无法在以下课程上工作:

}

0 投票
3 回答
1135 浏览

c# - 反序列化使用不同版本的签名程序集编写的泛型的最佳方法是什么?

在其他情况下,建议您简单地添加一个从程序集类型中删除版本的 SerializationBinder。但是,当使用在已签名程序集中找到的类型的泛型集合时,该类型将严格根据其程序集进行版本控制。

这是我发现的作品。

但是,导致绑定过程全局更改对我来说似乎相当危险。如果序列化发生在多个线程中,可能会发生奇怪的事情。也许更好的解决方案是对 typeName 进行一些正则表达式操作?

编辑: 基于字符串的方法不起作用。泛型显然需要一个完整的强命名类型。如果你问我,那就太令人发指了。

0 投票
5 回答
1920 浏览

.net - ISerializable 和向后兼容性

我必须使用一个旧应用程序,该应用程序使用 binaryFormatter 将应用程序数据序列化到文件流中(比如在名为“data.oldformat”的文件中),没有任何优化主类已用属性标记

和序列化代码

为了优化序列化/反序列化过程,我只是让类实现 ISerializable 接口并编写了一些优化的序列化例程

优化效果非常好,但我必须找到一种方法来重新获取旧文件中的数据以实现向后兼容性。

我怎样才能做到这一点??

皮尔路易吉

0 投票
5 回答
7828 浏览

c# - 带有 MemoryStream 的 BinaryFormatter 问题

我正在测试 BinaryFormatter 以了解它如何为我工作,我有一个简单的问题:

当将它与字符串 HELLO 一起使用时,我将 MemoryStream 转换为数组,它给了我 29 个维度,其中五个是维度末尾的实际数据:

返回

有没有办法只返回编码为字节的数据而没有所有无关信息?