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

时间:2014-02-10 22:11:06

标签: c# serialization

我正在尝试将(非常复杂的)类标记为[Serializable],其中包括查找所有使用的类型并将其设为[Serializable]。我现在遇到一个例外情况:

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

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

1 个答案:

答案 0 :(得分:2)

问题出在很多方面。首先,我使用的是匿名的getter / setter:

public kAIINodeObject NodeContents
{
   get;
   private set;
}

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

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

进行标记
[field: NonSerialized]

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