如何识别c__DisplayClass未标记为可序列化的位置

问题描述 投票:3回答:1

我试图将一个(非常复杂的)类标记为[Serializable],它涉及查找所有使用的类型并使它们成为[Serializable]。我现在遇到一个例外情况:

Type kAI.Core.kAIXmlBehaviour+<>c__DisplayClass24 is not marked as Serializable.

我该在哪里开始寻找?我一直在尝试识别那些当我没有序列化时不会导致它的元素,但是分支因素是巨大的,我不知道这个DisplayClass24意味着什么或者为什么它是XmlBehaviour的子类。我在某处读到它是一个lambda表达式。这是否意味着我正在尝试存储lambda表达式,或者该类型是在lambda表达式中创建的?

c# serialization
1个回答
2
投票

问题是很多事情。首先,我使用的是匿名的getter / setter:

public kAIINodeObject NodeContents
{
   get;
   private set;
}

由于是属性,我无法将其标记为[NonSerialized]。这可以通过简单地制作对象来解决。

SLaks正确地指出事件处理程序正在被序列化,事件可以使用标记

[field: NonSerialized]

最后,this tool对于追踪物体的位置非常有用。

© www.soinside.com 2019 - 2024. All rights reserved.