2014-02-10 24 views
2

我試圖將一個(相當複雜的)類標記爲[Serializable],其中涉及查找所有使用的類型並將它們設置爲[Serializable]。我遇到了一個例外情況:如何識別c__DisplayClass未標記爲序列化的位置

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

我應該從哪裏開始尋找?我一直在試圖找出當我不序列化的元素不會導致它的元素,但分支因素是巨大的,我不知道這個DisplayClass24意味着什麼或者它爲什麼是XmlBehaviour的子類。我在某處讀到這是一個lambda表達式。這是否意味着我試圖存儲一個lambda表達式,或者該類型是在lambda表達式中創建的?

+0

這可能來自事件處理程序。 – SLaks

+0

我擔心,但是當我試圖讓一個事件處理程序不應該被序列化時,它會告訴我:'Attribute'NonSerialized'在此聲明類型上無效。它僅在'字段'聲明中有效。' –

+0

使用'[field:NonSerialized]'http://blog.slaks.net/2011/07/about-net-events.html – SLaks

回答

1

問題是一些事情。首先,我用的是匿名的getter/setter:

public kAIINodeObject NodeContents 
{ 
    get; 
    private set; 
} 

,我可以不標記爲[NonSerialized]是考慮到作爲一個屬性。這可以通過簡單地製作對象來解決。

SLaks正確地指出,事件處理程序正在連載,事件可以用

[field: NonSerialized] 

最後,this tool對跟蹤其中的對象是非常有用的標記。

相關問題