2017-06-04 60 views
0

我學到了艱辛的道路,如果你的對象不能正確序列化,然後RDLC報告生成不工作,不幸的是它傾向於在方式和有絕對無關,與你的對象,或者不能序列性質的消息失敗/反序列化。RDLC報告中使用了什麼序列化程序?

因此,RDLC報告生成之前,我測試的對象,看看他們能正確序列化 - 這給出了一個早期的異常信息識別正是爲什麼對象不試圖生成報告之前序列化。

這偉大工程 - 除了我還沒有完全制定出來測試其串行器。我嘗試過BinaryFormatter,XmlSerializer,ObjectStateFormatter。它們中的每一個都無法序列化我的一些對象,但傳遞給RDLC報告時似乎仍能成功運行。即我的測試有時會錯誤地識別RDLC報告中無法使用的對象,實際上它可以。

因此 - 沒有任何人確切地知道對象是如何序列化與RDLC報告?

回答

1

我看着代碼Microsoft.ReportViewer.Common.dll和它似乎有序列化對象到XML定製代碼,但隨後將使用System.Xml.dllXML Serializer序列化不屬於基本類型,數組或結構(如自定義類的子對象)。所以它似乎使用了自己的自定義序列化和XML序列化程序的組合。

它可能是最好假設所有的自定義子對象(通過屬性引用)可以通過XML串行處理您的根對象只要能序列化。

+0

謝謝!您還提示我安裝反彙編程序(JetBrains dotPeek),所以現在我的工具箱中有一個新玩具可以玩(因爲我無法在referencesource.microsoft.com上找到ReportViewer) – Etherman

+0

不熟悉那個。我使用Telerik JustDecompile(免費下載),並將其指向Report Viewer程序集。 –