2017-06-04 5 views
0

Ich habe auf die harte Tour gelernt, dass, wenn Ihre Objekte nicht korrekt serialisiert werden können, die Generierung von RDLC-Berichten nicht funktioniert und sie leider auf verschiedene Arten und mit Nachrichten fehlschlägt, die absolut nichts mit Ihrem Objekt oder Eigenschaften zu tun haben, die nicht serialisiert werden können. deserialisieren.Welcher Serializer wird in RDLC-Berichten verwendet?

Vor der Erstellung des RDLC-Berichts teste ich also die Objekte, um zu sehen, dass sie richtig serialisieren können - dies gibt eine frühe Ausnahmebedingung, die genau angibt, warum das Objekt nicht serialisiert wird, bevor es versucht, den Bericht zu generieren.

Das funktioniert gut - außer ich habe nicht ganz ausgearbeitet, mit welchem ​​Serializer zu testen. Ich habe versucht, BinaryFormatter, XmlSerializer, ObjectStateFormatter. Bei jedem dieser Objekte können einige meiner Objekte nicht serialisiert werden, die dennoch erfolgreich funktionieren, wenn sie an einen RDLC-Bericht übergeben werden. Das heißt, mein Test identifiziert manchmal fälschlicherweise ein Objekt, das nicht in einem RDLC-Bericht verwendet werden kann, obwohl es tatsächlich möglich ist.

Daher weiß jemand genau, wie Objekte mit RDLC-Berichten serialisiert werden?

Antwort

1

ich den Code in Microsoft.ReportViewer.Common.dll sah und es scheint, dass es benutzerdefinierten Code für Objekte zu XML-Serialisierung, aber dann verwendet die XML Serializer in System.Xml.dll serialisiert nicht Primitiven, Arrays oder Structs Kind-Objekten, die sind (wie benutzerdefinierte Klassen hat). Es scheint also eine Kombination aus seiner eigenen benutzerdefinierten Serialisierung und dem XML-Serializer zu verwenden.

Es wäre wahrscheinlich am besten anzunehmen, dass Ihr Root-Objekt serialisiert werden kann, solange alle benutzerdefinierten untergeordneten Objekte (die über Eigenschaften referenziert werden) vom XML-Serializer verarbeitet werden können.

+0

Danke dafür! Sie haben mich auch aufgefordert, einen Disassembler (JetBrains dotPeek) zu installieren, so dass ich jetzt ein neues Spielzeug in meiner Toolbox zum Spielen habe (da ich ReportViewer auf referencesource.microsoft.com nicht finden konnte) – Etherman

+0

Nicht vertraut mit diesem. Ich benutzte Telerik JustDecompile (kostenloser Download) und zeigte es einfach auf die Report Viewer-Assembly. –

Verwandte Themen