问题标签 [iserializable]

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 投票
4 回答
42423 浏览

c# - ISerializable 接口的意义何在?

似乎我可以序列化没有该接口的类,所以我不清楚它的目的。

0 投票
3 回答
3055 浏览

c# - WinForms C#中自定义对象类型的跨进程拖放

这个问题与我感兴趣的问题很接近,但并不完全。

我有一个用 C# 编写的 .NET WinForms 应用程序。我有一个ListView显示 C# 对象数组的控件。我已经将它连接起来,以便您可以将这些列表视图项拖放到同一应用程序中的不同表单中,并且它会正确地将对象数组(类型Session)传递给该其他表单的放置处理程序。

但是,我现在想在运行应用程序的多个实例时支持跨进程拖放。这似乎会起作用(例如GetDataPresent成功),但当我实际尝试检索数据时最终会引发异常——无法object[]转换为Session[].

任何人都知道我是否必须为我的对象实施ISerializable才能使这项工作?通常,我会简单地尝试一下,但是ISerializable为这个类实现将是非常重要的,我担心这样做可能会产生奇怪的副作用。


更新:实施ISerializable无济于事-永远不会调用该方法。同样,将Serializable属性添加到类中完全没有影响。还有其他想法吗?

0 投票
5 回答
33313 浏览

c# - 使用 Serializable 属性和实现 ISerializable 有什么区别?

Serializable使用属性和实现ISerializable接口有什么区别?

0 投票
5 回答
1920 浏览

.net - ISerializable 和向后兼容性

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

和序列化代码

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

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

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

皮尔路易吉

0 投票
2 回答
1325 浏览

.net - 解析实现 ISerializable 的对象的循环引用

我正在编写自己的 IFormatter 实现,但我想不出一种方法来解决两种都实现 ISerializable 的类型之间的循环引用。

这是通常的模式:

然后我这样做:

如果我使用开箱即用的 BinaryFormatter 对 b 进行序列化和反序列化,则上述对引用相等性的测试会如预期的那样返回 true。但我无法想出在我的自定义 IFormatter 中实现这一点的方法。

在非 ISerializable 情况下,一旦解决了目标引用,我就可以简单地使用反射重新访问“待定”对象字段。但是对于实现 ISerializable 的对象,不可能使用 SerializationInfo 注入新数据。

谁能指出我正确的方向?

0 投票
2 回答
1032 浏览

c# - ISerializable:在反序列化时分配现有对象

我们的任务非常简单,我们有一个对象图,其中每个对象(IDItem)都有一个唯一的 ID。对象图存在两次,分别在客户端和服务器机器上。

现在我们将一些可序列化的命令传递给服务器。该命令具有一些 IDItems 作为字段。IDItem 实现了 ISerializable 接口,并且只将它们的 ID 存储在 SerializationInfo 中。像:

问题是,我们如何将现有对象分配给反序列化器创建的实例?显然,ISerializable 构造函数中的以下内容不起作用,因为“this”标识符是只读的:

那么知道我们如何将现有对象分配给反序列化对象吗?

最好的问候, 塔尔姆

0 投票
3 回答
480 浏览

.net - 如何在 F# 中实现 ISerializable

假设您从这个存根开始:

问题是规范说,“一般来说,如果类没有密封,这个构造函数应该受到保护。” F# 没有受保护的关键字 - 那我该怎么做呢?

约束(由于要求在 API 级别完美匹配现有的 C# 类):

  1. 必须实现 ISerializable
  2. 构造函数必须受到保护

编辑 - 有趣的额外信息 F# 规范说,如果您覆盖受保护的函数,则生成的函数将受到保护。这是不正确的。如果您不指定可访问性,则生成的覆盖将是公开的,无论如何(违反合同)。

0 投票
1 回答
418 浏览

c# - 是否有二进制序列化对象中每个属性的快捷方式?

如果有一个对象,其中每个公共属性都必须被序列化并且属性很简单(只是数字或字符串或已经实现的对象ISerializable),是否有一种简单的方法可以做到这一点,而不必每次都创建GetObjectData(SerializationInfo info, StreamingContext context)一个构造函数作为参数?SerializationInfo

我知道它可以通过反射手动完成,但是 .NET Framework 中是否有一种神奇的方法可以做到这一点?


所以正确答案是:

不要尝试实现 ISerializable - 它用于自定义序列化。而是在您的类声明之前添加 [Serializable] 属性。

0 投票
1 回答
1035 浏览

c# - 如何构造类以实现 IEquatable 和 ISerializable

一段时间以来一直在努力解决这个问题

我遇到的问题是尝试添加 IEquatable 行为,以便我的派生类可以使用 ILink 等的集合操作相交。

此刻我有...

和一堆派生类,比如

所以为了做列表的交集,我想我会创建一个像这样的抽象类......

但是,当我将派生类型从

我得到一个 SerializationException “找不到成员 'Linkid'。” 这是它尝试反序列化的第一个成员

顺便说一句:这是远程处理,因此需要自定义序列化 - 有没有办法将这些行为组合在一起?

非常感谢!

0 投票
1 回答
875 浏览

c# - 如何序列化集合

我有 ISet 类型的属性的类。我想序列化该类,但不知道如何处理 ISet。

有没有人尝试做同样的事情?请帮我。