XML Deserialisierung eines Versions-Strings schlägt fehl.

  • C#
  • .NET (FX) 4.5–4.8

    XML Deserialisierung eines Versions-Strings schlägt fehl.

    Guten Tag,

    Ich versuche gerade eine einen XML string der eine Version beinhaltet zu deserialisieren. Erstaunlicherweise funktioniert das nicht, d.h. aus der Version 1.0.0 macht der XML Serializer 0.0.
    Code der das Problem reproduziert

    C#-Quellcode

    1. using System;
    2. using System.IO;
    3. using System.Xml.Serialization;
    4. namespace VersionDeserialization
    5. {
    6. internal class Program
    7. {
    8. static void Main(string[] args)
    9. {
    10. string xml = "<?xml version=\"1.0\"?><API><Version>1.0.0</Version></API>";
    11. var serializer = new XmlSerializer(typeof(VersionWrapper));
    12. using (TextReader reader = new StringReader(xml))
    13. {
    14. var versionWrapper = serializer.Deserialize(reader) as VersionWrapper;
    15. Console.WriteLine($"Version: {versionWrapper?.Version.ToString() ?? "n/a"}"); // Version: 0.0
    16. }
    17. Console.ReadKey();
    18. }
    19. }
    20. [XmlRoot("API")]
    21. public class VersionWrapper
    22. {
    23. [XmlElement("Version")]
    24. public Version Version { get; set; }
    25. }
    26. }



    Hat zufällig jemand eine Idee wie ich die Version richtig deserialisieren kann?



    Edit:
    Bei genauerer Betrachtung des Problems ist es eigentlich klar. Der Serializer muss ja die einzelnenen Eigenschaften (Major, Minor, Build, Revision) einzeln setzten können. Ohne einen Konverter wird das schwer. Ich hab mir jetzt mit einer VersionEx Klasse beholfen. Die implementiert das IXmlSerializable Interface und hat somit zugriff auf den XmlReader.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Fakiz“ ()