2011-08-05 91 views
0

我正在嘗試使用XmlFormatter爲包含對象類型屬性的對象發送消息給MSMQ。如果對象屬性爲空,則序列化/反序列化完美無缺。但是,如果我分配一個對象,則在調用.send時會收到異常。生成XML文檔時發生錯誤是我收到的唯一信息。這兩個類都標記爲可序列化。還有什麼我需要做的嗎?MSMQ複雜對象序列化/反序列化

謝謝。

+0

什麼是例外? –

回答

0

我懷疑你的對象沒有正確地序列化成XML。

它是如何工作的,例如,如果你只是將一個字符串值賦給對象屬性?

您可以使用小型控制檯應用程序或調試器來測試您的類是如何序列化和從xml反序列化並檢查XmlFormatter的行爲。

+0

如果隊列超出等式,我可以序列化/反序列化,不會有任何問題。所以,我不確定發生了什麼問題。所有涉及的類都是可序列化的。我如何驗證XmlFormatter行爲?我只是使用NetDataContractSerializer實用程序類,我們必須序列化和反序列化以確保對象的結構正確。 – chad

+0

MessageQueue.Formatter.Write失敗,並出現相同的錯誤。顯然,這是MessageQueue.Send在底層執行的內容,所以這並不奇怪。 – chad

0

即使您的複雜類將一個屬性聲明爲類型對象,但在將某個屬性分配給它時,序列化將該屬性視爲指定類型的對象。例如,如果您將對象屬性賦值爲新的CustomClass(),則序列化將期望對象(),但找到一個CustomClass(),因此序列化將失敗。 (類型CustomClasss不是預期的)

如果您爲對象屬性賦予新對象()的值,那麼我懷疑序列化會起作用。