2017-06-04 30 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程序集。 –