.NET: XmlSerializer ohne dynamische Code-Generierung

by Haf
29.09.2009
tags: , ,
 

Unter C# kann man mittels XmlSerializer XML Daten zu Objekten deserialisieren oder den umgekehrten Weg, Objekte zu XML umwandeln.
Hier hat die Dokumentation jedoch eine beachtliche Lücke. XmlSerialiser generiert nämlich jedesmal on-the-fly eine DLL um den XML Stream typ-sicher umwandeln zu können. Hierfür wird eine C# Source-Datei generiert und csc.exe aufgerufen.

Die erstellten Dateien werden im %TEMP%-Verzeichnis erstellt und in der Standardeinstellung sofort wieder gelöscht, wenn sie nicht mehr benötigt werden.
Das automatische Löschen kann man umgehen, wenn man z.B. in WINDOWS\Microsoft.NET\Framework\v2.0...\CONFIG\maschine.config folgenden Eintrag hinzufügt:

<system.diagnostics>
  <switches>
     <add name="XmlSerialization.Compilation" value="true" />
  </switches>
</system.diagnostics>

Nun kann man entweder die .CS-Datei oder die generierte DLL-Datei in das eigene Projekt integrieren. Dann ist die direkte Nutzung von XmlSerializer nicht mehr notwendig.

Mit dieser Lösung wird zur Laufzeit die csc.exe nicht mehr benötigt und entsprechend die Performance verbessert.

Links:
- XmlSerializer: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • MisterWong
  • Technorati
  • Yigg
No Comments

Leave A Comment

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS