Mam aplikację, która obsługuje wiele typów i wersji niektórych urządzeń. Może łączyć się z tymi urządzeniami i pobierać różne informacje.Tworzenie klasy właściwości rozszerzalnych (OOP)
W zależności od rodzaju urządzenia posiadam (między innymi) klasę, która może zawierać różne właściwości. Niektóre właściwości są wspólne dla wszystkich urządzeń, niektóre są unikalne dla konkretnego urządzenia.
Dane te są serializowane do xml.
Jaki byłby preferowany sposób wdrożenia klasy, która obsługiwałaby przyszłe właściwości w przyszłych wersjach tych urządzeń, a także była kompatybilna wstecz z poprzednimi wersjami aplikacji?
mogę myśleć kilka sposobów, ale uważam, że żaden z nich świetne:
- Użyj zbiór par nazwa-wartość:
- Plusy: dobrą kompatybilność wsteczną (XML oraz poprzednie wersje mojej aplikacji) i rozszerzalność,
- przeciw: brak bezpieczeństwa typu, brak intellisense, wymaga implementacji niestandardowej serializacji xml (do obsługi różnych
value
obiekty)
- Tworzenie pochodzący właściwości klasy dla każdego nowego urządzenia:
- plusy: Typ bezpieczeństwa
- minusy: trzeba użyć
XmlInclude
lub niestandardową serializacji deserializacji klas pochodnych, nie wstecz zgodność z poprzednim schematem XML (mimo że implementacja niestandardowej serializacji I może pomiń nieznane właściwości?), wymaga rzutowania w celu uzyskania dostępu do właściwości w klasach pochodnych.
- Inny sposób na zrobienie tego?
Używam C#, przy okazji.
czy XML jest wymagany? Oba pasze twierdzą, że XML musi być obsługiwany. Wydaje się, że nie chcesz używać XML ... – tuergeist
Tak, to jeden z tych wymagań klienta-zna-a-modne. :) – Groo
Wybrałabym "Utwórz klasy właściwości pochodnych dla każdego nowego urządzenia" ... – tuergeist