如何识别c__DisplayClass未标记为可序列化的位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何识别c__DisplayClass未标记为可序列化的位置相关的知识,希望对你有一定的参考价值。
我试图将一个(非常复杂的)类标记为[Serializable]
,它涉及查找所有使用的类型并使它们成为[Serializable]
。我现在遇到一个例外情况:
Type kAI.Core.kAIXmlBehaviour+<>c__DisplayClass24 is not marked as Serializable.
我该在哪里开始寻找?我一直在尝试识别那些当我没有序列化时不会导致它的元素,但是分支因素是巨大的,我不知道这个DisplayClass24意味着什么或者为什么它是XmlBehaviour的子类。我在某处读到它是一个lambda表达式。这是否意味着我正在尝试存储lambda表达式,或者该类型是在lambda表达式中创建的?
答案
问题是很多事情。首先,我使用的是匿名的getter / setter:
public kAIINodeObject NodeContents
{
get;
private set;
}
由于是属性,我无法将其标记为[NonSerialized]
。这可以通过简单地制作对象来解决。
SLaks正确地指出事件处理程序正在被序列化,事件可以使用标记
[field: NonSerialized]
最后,this tool对于追踪物体的位置非常有用。
以上是关于如何识别c__DisplayClass未标记为可序列化的位置的主要内容,如果未能解决你的问题,请参考以下文章
调用 lambda 时,“DisplayClass”名称是啥意思?