问题标签 [serializationbinder]
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# - 反序列化使用不同版本的签名程序集编写的泛型的最佳方法是什么?
在其他情况下,建议您简单地添加一个从程序集类型中删除版本的 SerializationBinder。但是,当使用在已签名程序集中找到的类型的泛型集合时,该类型将严格根据其程序集进行版本控制。
这是我发现的作品。
但是,导致绑定过程全局更改对我来说似乎相当危险。如果序列化发生在多个线程中,可能会发生奇怪的事情。也许更好的解决方案是对 typeName 进行一些正则表达式操作?
编辑: 基于字符串的方法不起作用。泛型显然需要一个完整的强命名类型。如果你问我,那就太令人发指了。
c# - 自定义类型和序列化列表的问题
我们正在努力发布我们其中一款产品的 2.0 版,并且我们希望保持与 1.0 版客户已安装基础的文件兼容性。我一直在我们应用程序中的大多数类型上实现 ISerializable,但似乎遇到了障碍。
我有一个类型,为了讨论,我们称它为 Family
这是作为 1.0 版本发布的,在 2.0 中,我们将 Name 类更改为 Person,这实际上是相同的,但构造函数略有不同,而且名称显然不同。
这显然不起作用,“名称”类型不再在程序集中,所以我添加了一个 SerializationBinder 来解决这个问题:
这主要是有效的,当我反序列化对象时,绑定器被调用,返回正确的类型,但是 Person 上的反序列化构造函数永远不会被调用。没有抛出异常,有人有什么想法吗?
c# - "System.Collections.Generic.List`1" SerializationBinder BindToType
我有一个 Web 服务,它将以下内容作为字节数组序列化并返回给客户端:
也就是说,我将List(Of MyFile)返回给客户端。
它由具有以下 TYPENAME 的客户端使用
程序集名称为:
我正在使用以下两个类来绑定反序列化:
但是对于我的一生,并尝试了 GETTYPE 语句的许多变体,我的 TYPE 始终为 NULL。
例如,根据 STACKOVERFLOW 上的帖子,我尝试过:
但它没有用:(
c# - 无法反序列化惰性对象
我想序列化和反序列化一个包含Lazy
Collection
一些自定义对象的对象。
通常一切正常,但是如果用于序列化的类的名称空间发生更改,则会出现此问题。
我SerializationBinder
在反序列化时写了一个指向正确的类。但由于某种原因,我没有得到反序列化的值。
以下代码片段解释了我遇到的问题;
用于序列化的类:
以上相同的类用于反序列化,但只有命名空间更改为ConsoleApplication14.OtherNamespace
为了使这种反序列化起作用,我使用了以下SerializationBinder
类:
对象的序列化和反序列化MyCustomClass
:
当调用反序列化 Lazy 对象的属性NullReferenceException
时,我得到了。Value
(即何时objOfOtherNamespaceClass.CollectionOfInnerObj.Value
调用)
请帮我解决这个问题...
c# - 在 DataContractSerializer 中反序列化时如何获取另一种类型的对象?
在对象版本控制的情况下,如果旧版本对象被序列化,现在我需要新版本的反序列化对象。
我已经通过互联网检查并观察到我们可以SerializationBinder
用于此目的。但我不知道如何将它与DataContractSerialzer
.
这个活页夹可以分配给BinaryFormatter
usingBinder
属性。
DataContractSerializer 是否存在类似的东西?
请让我知道是否有任何其他方法可以实现这一目标。
请纠正我,如果我认为这有什么不对。
c# - 使用 SerializationBinder 和 Surrogate 更新数据对象
我得到一个“Project1.Class1[]”类型的对象无法转换为“Project2.Class1[]”类型。尝试将数据从 class1 项目 1 获取到项目 2 时
传递的对象是 Project1.Class1 的列表,其中包含 Class2 的子对象。所以我创建了两个代理类来处理对象的转换,但是在代理处理更新 Class1 列表之前我得到了这个错误。
编辑:修复问题后,此解决方案将对需要在 C# 中更新 SQL 中的 varbinary 字段的人提供巨大帮助。大多数代码根源都在让人们开始的答案中。:)