Ich habe eine Anwendung, die mehrere Typen und Versionen einiger Geräte unterstützt. Es kann sich mit diesen Geräten verbinden und verschiedene Informationen abrufen.Erstellen einer erweiterbaren Eigenschaftenklasse (OOP)
Je nach Gerätetyp habe ich (unter anderem) eine Klasse, die verschiedene Eigenschaften enthalten kann. Einige Eigenschaften sind allen Geräten gemeinsam, einige sind für ein bestimmtes Gerät eindeutig.
Diese Daten werden in XML serialisiert.
Was wäre ein bevorzugter Weg, um eine Klasse zu implementieren, die zukünftige Eigenschaften in zukünftigen Versionen dieser Geräte unterstützt, sowie rückwärtskompatibel zu früheren Anwendungsversionen?
Ich kann von mehreren Möglichkeiten denken, aber ich finde keine von ihnen groß:
- Verwenden Sie eine Auflistung von Name-Wert-Paare:
- Profis: gute Abwärtskompatibilität (XML und frühere Versionen meiner App) und Erweiterbarkeit,
- Nachteile: keine Art Sicherheit, keine Intellisense, erfordert die Implementierung von benutzerdefinierten XML-Serialisierung (um verschiedene
value
Objekte)
- abgeleitet Erstellen Eigenschaften Klasse für jedes neue Gerät:
- Profis: Typsicherheit
- Nachteile: haben
XmlInclude
oder benutzerdefinierte Serialisierung verwenden abgeleiteten Klassen deserialisieren, nicht rückwärts Kompatibilität mit vorherigen XML-Schema (obwohl durch die Implementierung benutzerdefinierter Serialisierung I könnte überspringen unbekannte Eigenschaften?), erfordert Casting für den Zugriff auf Eigenschaften in abgeleiteten Klassen.
- Eine andere Möglichkeit, es zu tun?
Ich benutze C#, übrigens.
ist XML erforderlich? Beide Ihrer Cons sagen, dass XML behandelt werden muss. Es fühlt sich an, als ob Sie nicht XML verwenden wollen ... – tuergeist
Ja, das ist die eine dieser Client-kennt-ein-Buzzword-Anforderungen. :) – Groo
Ich würde wählen "Erstellen abgeleiteten Eigenschaften Klasse für jedes neue Gerät" ... – tuergeist