问题标签 [nonserializedattribute]

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 回答
6798 浏览

c# - 为什么我的属性声明“[field:NonSerialized]”中需要“field:”?

我在任何地方都找不到列为 C# 关键字的“字段”。有谁知道这方面的背景?

0 投票
2 回答
5269 浏览

c# - 为什么不能在类级别使用“NonSerialized”属性?如何防止类的序列化?

我有一个使用二进制序列化深度克隆的数据对象。此数据对象支持属性更改事件,例如 PriceChanged。

假设我将一个处理程序附加到 PriceChanged。当代码尝试序列化 PriceChanged 时,它会引发处理程序未标记为可序列化的异常。

我的替代方案:

  • 在序列化之前,我无法轻松地从事件中删除所有处理程序
  • 我不想将处理程序标记为可序列化,因为我还必须递归地标记所有处理程序依赖项。
  • 我不想将 PriceChanged 标记为 NonSerialized - 有数十个这样的事件可能有处理程序。编辑:我不能这样做的另一个原因是因为生成了数据类(以及事件),并且我无法直接控制生成代码。理想情况下,生成代码只会将所有事件标记为 NonSerialized。
  • 理想情况下,我希望 .NET 在该点停止向下对象图并使其成为“叶子”。那么,为什么.NET 不允许将整个类标记为 NonSerialized?

--

我最终通过使处理程序实现 ISerializable 并且在序列化构造函数/ GetDataObject 方法中什么都不做来解决这个问题。但是,处理程序仍然是序列化的,只是它的所有依赖项都设置为 null - 所以我也必须考虑到这一点。

有没有更好的方法来防止整个类的序列化?也就是说,不需要考虑空依赖项?

0 投票
2 回答
4897 浏览

c# - [OptionalField] 和 [NonSerialized] 有什么区别

我在transcender上遇到了这个问题:

如果在反序列化期间不需要字段的值,您应该对字段应用什么?

我 = [非序列化],答案 = [可选字段]

我的直觉反应是 NonSerialized 但 Transcender 说我错了。就 [Nonseralized] 属性而言,我很清楚应该注意什么,但我仍然非常希望这一点得到澄清。

据我所知,前者与同一程序集的新旧版本之间的版本冲突有关。后者更关心不序列化字段FULLSTOP。还有什么可以让这两者区分开来的吗?MSDN 并没有真正说明这一点,因为它们都用于 BinaryFormatters 和 SoapFormatter 以及使用 XMLIgnoreAttribute 的 XMLFormatter。

我的第二个问题是你能混合和匹配这两个属性中的任何一个吗?我还没有使用它们。

只是把这个扔出去,但我的回答是否与 [OnDeserialized] 和 IdeserilizationCallback 接口的实现方式有关?

更新:

我知道可选字段属性不会序列化数据成员持有的值,但 NonSerialized 甚至不会序列化数据成员或其值。

0 投票
5 回答
8239 浏览

c# - 不使用 [Serializable] 时 [NonSerialized] 的好处

我正在查看我正在处理的项目中的一些现有代码,我发现了一个实现为的类:

它不应该看起来更像这样吗?

或者即使类本身不是可序列化的,添加 [NonSerialized] 是否还有一些额外的好处?

0 投票
3 回答
3523 浏览

.net - 为什么 [NonSerialized] 不适用于自动实现的属性?

为什么不允许这样做?

我知道解决方法,例如

  • 实现 ISerializable
  • 切换到 XmlSerializer/XmlIgnore
  • 切换到手动实现的属性

问题具体是为什么在属性上不允许 [NonSerialized],而在字段上却允许。

0 投票
1 回答
8358 浏览

c# - 如何为 XML 序列化指定具有公共访问器的 NonSerialized 字段

如何为 XML 序列化指定具有公共访问器的 NonSerialized 字段?

0 投票
2 回答
1774 浏览

serialization - 由于复杂的对象,工作流序列化异常

我得到以下异常:

System.Workflow.Runtime.Hosting.PersistenceException:在程序集“Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”中键入“Microsoft.SharePoint.SPWeb”未标记为可序列化。—> System.Runtime.Serialization.SerializationException:在程序集“Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”中键入“Microsoft.SharePoint.SPWeb”未标记为可序列化

错误来自这里:

我找到了两篇博文:

这个问题有一个解决方案:不要将复杂的成员对象作为全局变量,而是作为局部变量 - 即在本地(workflowProperties.Web)而不是在全局级别声明 SPWeb。

因此,我必须在我使用的每种方法中重新声明 spWeb - 我认为这很丑陋。

我也尝试过的是:

==> 没有更多的序列化异常!

NonSerialized在此字段上使用属性时是否有任何负面影响?
或者换句话说 - 有什么影响?

0 投票
1 回答
195 浏览

asp.net-mvc-3 - 如何在我的模型中有一个必需的和非序列化的属性

在我的模型中,我有这样的事情:

我希望这两个属性是必需的,但不可序列化

我尝试使用 [required] 和 [nonSerialized] 注释,但没有成功。我已经看过这个帖子了

但我不知道如何做我想做的事。这将有助于 NonObtrusive-Validation,我希望这些字段完整,但我不想序列化它们。

0 投票
2 回答
1786 浏览

c# - 如何序列化包含接口的不可修改类?

我正在尝试序列化包含接口的对象。但是,接口不能序列化。通常,我会使用NonSerialized标签之类的东西,但我不知道如何将此属性应用于我无法修改的类,例如预定义的 .NET 类之一(例如:)System.Diagnostics.Process

例如,考虑以下代码:

这将打印以下结果:

有没有办法在我无法修改的类中执行以下任何操作,例如系统类?

  1. 在序列化过程中选择性地忽略子元素,这样子元素根本不会被序列化
  2. 用完成相同事情的东西标记一个元素NonSerialized

I've thought of some solutions like using reflection to dynamically generate a class that contains all the same members as the class to be serialized, doing some type of deep copy, and serializing that. However, I'm curious to see if there is any simpler way to accomplish this serialization task other than going the class generating reflection route.

0 投票
1 回答
491 浏览

file-upload - 服务器关闭和启动时出错 org.apache.struts.upload.C​​ommonsMultipartRequestHandler$CommonsFormFile

我正在使用 Struts 1 应用程序!

我的应用程序在关机和启动时显示错误。我在服务器关闭和启动时都发现了两个不同但相关的错误。

关闭错误如下所示

并重新启动服务器:

EmailToClient 访问任何操作时都会发生此错误。即,访问EmailToClient ,然后发生关闭服务器错误,然后在启动时出现错误。

EmailToClient是我的 struts 应用程序中的表单名称和操作名称

有人可以帮帮我吗。我希望有人可以分析错误并预测出了什么问题。