C# RDLC报告中使用了什么序列化程序?

C# RDLC报告中使用了什么序列化程序?,c#,serialization,reporting-services,C#,Serialization,Reporting Services,我了解到,如果您的对象无法正确序列化,那么RDLC报告生成将无法工作,不幸的是,它往往会以与您的对象或无法序列化/反序列化的属性完全无关的方式和消息失败 因此,在生成RDLC报告之前,我会测试对象,看看它们是否可以正确序列化——这会给出一条早期异常消息,明确指出对象在尝试生成报告之前没有序列化的原因 这工作得很好-除了我还没有确定测试哪个序列化程序。我尝试过BinaryFormatter、XmlSerializer和ObjectStateFormatter。其中的每一个都无法序列化我的一些对象,

我了解到,如果您的对象无法正确序列化,那么RDLC报告生成将无法工作,不幸的是,它往往会以与您的对象或无法序列化/反序列化的属性完全无关的方式和消息失败

因此,在生成RDLC报告之前,我会测试对象,看看它们是否可以正确序列化——这会给出一条早期异常消息,明确指出对象在尝试生成报告之前没有序列化的原因

这工作得很好-除了我还没有确定测试哪个序列化程序。我尝试过BinaryFormatter、XmlSerializer和ObjectStateFormatter。其中的每一个都无法序列化我的一些对象,尽管如此,这些对象在传递到RDLC报告时似乎仍能成功地工作。i、 我的测试有时会错误地识别一个不能在RDLC报告中使用的对象,而实际上它可以


因此,有人确切地知道对象是如何用RDLC报告序列化的吗?

我查看了Microsoft.ReportViewer.Common.dll中的代码,它似乎有自定义代码用于将对象序列化为XML,然后使用
System.XML.dll
中的
XML序列化程序
来序列化非原语、数组或结构(如自定义类)的子对象。因此,它似乎结合使用了自己的自定义序列化和XML序列化程序


最好假设根对象可以序列化,只要所有自定义子对象(通过属性引用)都可以由XML序列化程序处理。

谢谢!您还提示我安装反汇编程序(JetBrains dotPeek),因此现在我的工具箱中有一个新玩具可玩(因为我在referencesource.microsoft.com上找不到ReportViewer),但我对这个不熟悉。我使用Telerik JustDecompile(免费下载)并将其指向报表查看器程序集。