问题标签 [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.
c# - 无论如何要计算或获取在 ProgressBar 中显示的序列化时间吗?
我使用 C# .net 4.0 并没有看到任何可能的方法,但也许你知道吗?:)
我以这种方式进行序列化:
c# - 哪里最好存储临时反序列化数据?
我可以避免向类添加额外的字段来存储仅用于反序列化/序列化的数据吗?
假设我有一些课程:
有没有办法避免serializableTemporaryData
在每个对象中都有字段MyClass
?例如,我可以将其设为静态(可能通过更改我的 On... 方法)吗?
约束:我无法更改NonSerializableDataType
.
示例:假设 myField 包含资源句柄。然后,在序列化时,我必须存储一些反序列化后如何获取资源的信息,但我不能存储句柄本身。如果我将句柄包装到另一个类中,那么我只是将问题转移到了包装类——然后我会为包装类提出同样的问题。
c# - BinaryFormatter Serialize 产生不同的结果
在我的应用程序的身份验证代码中,FormsAuthentication
用于处理最复杂的部分,我已将可能的罪魁祸首缩小到运行应用程序到 BinaryFormatter 的某些机器上的环境问题。
在某些机器上,身份验证过程正确完成并且我的用户已登录。但是,在其他机器上,相同的输入BinaryFormatter
会产生不同的结果(实际上是相同的,除非我遗漏了什么),从而破坏了身份验证过程并且用户永远无法登录在。
在正确的环境中,它会生成一个长度约为373的序列化字符串。在恶劣的环境下,产生的序列化字符串是5,024。问题就在这里。
以下是代码的运行方式:
这反过来又弄乱了身份验证过程的其余部分,因为它本质上创建了一个包含大约 40,000+ 字节数据的 cookie,而该 cookie 永远不会创建 cookie(需要 4,096 字节或更少才能被浏览器接受)。
我的问题,它不容易测试(告诉我) -两台机器之间有什么不同会导致序列化差异?两者都在 Visual Studio 的 Windows 7 上开发并在内置的 Cassini 服务器上运行,但是否还有其他常见的陷阱会导致Serialize
返回如此截然不同的结果?
c# - 尝试反序列化对象时程序挂起
我正在开发一个基于 Windows 的聊天应用程序。当客户端第一次发送命令类时,服务器会处理它并通过发送另一个命令类来确认客户端。
(我已经对代码段进行了编号以发现程序的流程)
一切顺利,直到服务器发回确认。当代码在客户端 (5.) 中运行以反序列化并获取确认副本时,客户端程序无响应。但是服务器(6.)中的代码似乎工作 - 它成功地序列化了命令。
谁能指出这里有什么问题?
提前致谢。
服务器代码:
客户代码:
.net - Can I serialize an object (containing members: Dictionary, List... etc) in Mono and deserialize it in MS.NET or vice versa by using protobuf-net?
I have a server running on MS.NET and a client on Mono (this is a Unity3D engine) and when i try to BinaryFormatter().Deserialize an object like this:
the client side cannot found/load types: Dictionary, List... The same "client code" running under MS.NET works good i.e. does not have any exceptions during deserialization.
As i read from http://www.mono-project.com/FAQ:_Technical#Compatibility this is a common problem:
"If you are serializing your own classes, there is no problem, since you have control over the assemblies and classes being used for serialization. However, if you are serializing objects from the framework, serialization compatibility is not guaranteed, since the internal structure of those objects may be different. This compatibility is not even guaranteed between different MS.NET versions or Mono versions."
Does ProtoBuf-Net help to avoid/resolve this serialization/deserialization problem ?
c# - 挂钩到反序列化过程
我有一个DateRange
通过静态引用表示无限概念的对象,如下所示。如您所见,定义 Infinity 的端点也是不同类中的静态引用,DatePoint.Past
并且DatePoint.Future
.
现在我需要对其进行序列化(作为使用序列化的深度克隆方法的一部分)并知道何时反序列化具有DateTime.Min
和DateTime.Max
作为端点的实例,那么该实例应该是DateRange.Infinity
. 所以我想我需要成功ISerializable
。
我的第一次实施尝试ISerializable
很差;但我正在展示它,希望它可以为某人提供更快的解决方案。我已经为 NHibernate 使用了一些类似的代码来存储DateRange
在数据库中并重新构建 Infinity,但我还不知道如何将其应用于序列化。
DatePoint
已标记[Serializable]
但未实现ISerializable
。
编辑过的问题
我不想序列化/反序列化 Infinity。我正在寻找的是一个挂钩,我可以将反序列化DataRange
并决定它是否等同于Infinity
.
**
干杯,贝里尔
日期范围
日期点
第一次 ISerializable 尝试
c# - 将一个类转换为没有任何值的字节数组已经包含我的 256 个可用字节中的 220 个字节
我目前正在将类保存UsageData
到字节数组并将其存储在硬件密钥上。该硬件密钥为用户数据保留了最多 256 个字节。目前,我填充的属性类的大小约为 640 字节,已经压缩。现在我去创建一个UsageDataTemp
没有任何属性/字段的临时类。我运行一个测试来查看没有任何值的字节数组有多大,它已经有 220 个字节的大小,只剩下 36 个字节要填充。
为什么没有任何值的空类已经需要 220 个字节来保存自己。有没有办法进一步压缩字节数组。还是我需要开始自己制作BinaryFormatter
.
c# - 清理 BinaryFormatter 的输入
我正在使用 .NET BinaryFormatter
,以及序列化自定义对象并将其存储在网页上Convert.ToBase64String
的隐藏标签中。<input>
当用户提交表单时,我会反转反序列化自定义对象的步骤:
巨大的安全漏洞:如果用户巧妙地序列化一个实例MyMaliciousType
并将其转换为 base-64 字符串,然后将其发布到Web 表单中会怎样。
有没有办法在实际执行反序列化之前判断被反序列化的类型是否与给定类型匹配?
c# - .NET Remoting,为什么列表不是可远程处理的?
我正在使用RemotingServices.Marshal
andActivator.GetObject
在驻留在同一台计算机上的两个简单程序之间建立远程处理通道。
我已确认该频道存在并且可以进行通信,因为这两个程序都已成功更改number
并text
具有完全独特的值(已确认)。
所以我立即尝试对strings
.
在一个程序中,我调用了strings.Add("1")
. 我尝试阅读strings
第二个程序的内容。它是空的。更重要的是,计数是0
。我不知道为什么strings
继续有0
对象,就好像我从未添加过它们一样。同样的事情发生在 a Stack<T>
andDictionary<T, K>
上,我只是不能向它添加任何元素。为了确保引用类型一般不会发生什么奇怪的事情,我还尝试StringBuilder
在 IPC 接口类中放置一个,并且在两个程序中成功地维护了“状态”,从而改变了它的值。
问题:为什么没有添加字符串列表,解决方案是什么?
我希望有经验的人可以立即发现这个问题。我尝试用谷歌搜索类似的问题,但没有得到任何有用的结果。令人惊讶的是,我只有 1 个用于谷歌搜索“调试 .net 远程透明代理”的好链接。这也是我的第二个问题。如何调试透明代理对象?
- 所有对象都被正确实例化(没有 NullReferenceException;事实上,没有异常)。
visual-studio - 从流中反序列化多种类型
我有一个纸牌游戏程序,到目前为止,聊天在主机和客户端之间的 TCPClient 流上来回运行良好。我想通过序列化和反序列化来做到这一点,这样我也可以在主机和客户端之间传递卡片。我试图为卡片的传递创建一个单独的 TCPClient 流,但它不起作用,并且认为保留一个获取文本消息和卡片的 TCPClient 流可能更容易。所以我创建了一个类,称为谷物,它具有卡片的属性,可以帮助我从另一端的嵌入式卡片数据库重建卡片。有没有办法让我的程序弄清楚卡片是否已放入流中,或者它是否' s 只是流中的文本,所以我可以正确地将其反序列化为字符串或谷物?或者我应该在我的谷物类中添加一个字符串属性,并且在反序列化为谷物后填充该属性时,我会知道它只是文本(如果反序列化后该字段为空,我会知道它是一张卡片)?我在想一个 try catch,它试图反序列化为一个字符串,如果它失败了,它会捕获并转换为谷物。或者我只是远离基地,应该选择另一条路线?我正在使用 Visual Studio 2011,正在使用二进制格式化程序,并且是序列化/反序列化的新手。如果它失败了,它将捕获并作为谷物投射。或者我只是远离基地,应该选择另一条路线?我正在使用 Visual Studio 2011,正在使用二进制格式化程序,并且是序列化/反序列化的新手。如果它失败了,它将捕获并作为谷物投射。或者我只是远离基地,应该选择另一条路线?我正在使用 Visual Studio 2011,正在使用二进制格式化程序,并且是序列化/反序列化的新手。