Tengo una aplicación que admite varios tipos y versiones de algunos dispositivos. Se puede conectar a estos dispositivos y recuperar diversa información.Crear una clase de propiedades extensibles (OOP)
Dependiendo del tipo de dispositivo, tengo (entre otras cosas) una clase que puede contener varias propiedades. Algunas propiedades son comunes a todos los dispositivos, algunas son exclusivas de un dispositivo en particular.
Estos datos se serializan a xml.
¿Cuál sería una forma preferida de implementar una clase que admitiría futuras propiedades en futuras versiones de estos dispositivos, y también sería compatible con versiones anteriores de la aplicación?
puedo pensar en varias maneras, pero me parece que ninguno de ellos grandes:
- utilizar una colección de pares nombre-valor:
- pros: buena compatibilidad con versiones anteriores (tanto xml y versiones anteriores de mi aplicación) y extensibilidad,
- contras: ningún tipo de seguridad, no intellisense, requiere la implementación de la serialización xml personalizada (para manejar diferentes
value
objetos)
- Crear clase derivada propiedades para cada dispositivo nuevo:
- pros: Tipo de seguridad
- contras: tener que utilizar
XmlInclude
o serialización personalizada deserializar clases derivadas, no hacia atrás compatibilidad con el esquema xml previo (aunque implementando serialización personalizada I podría omitir propiedades desconocidas?), requiere conversión para acceder a propiedades en clases derivadas.
- ¿Otra forma de hacerlo?
Estoy usando C#, por cierto.
¿Se requiere XML? Tus contras dicen que se debe manejar XML. Parece que no quiere usar XML ... – tuergeist
Sí, ese es uno de esos requisitos conocidos por el cliente. :) – Groo
Elegiría "Crear clase de propiedades derivadas para cada nuevo dispositivo" ... – tuergeist