C#: Dos clases diferentes de dos XSD diferentes.
Estoy luchando con la configuración de una función que devuelve una clase. La advertencia es que el XSD utilizado para crear las clases de respuesta difiere entre los entornos de prueba y de producción. La clase que deserializo desde XML depende del entorno al que estoy accediendo. ¿Cuál es lo correcto que debo hacer aquí para poder admitir ambos entornos (que se ampliarán a tres en el futuro)?
public async Task<*thingie*> ReadDataAsync(List de números de serie, env)
{
if(env == Test)
{
url = https://test.mycompany.com/db/getData
xml = <response>
var respA = xml.DeserializeXml<Xsd125.dataResponse>(); //XSD v1.25
}
elseif(env == Prod)
{
url = https://prod.mycompany.com/db/getData
xml = <response>
var respB = xml.DeserializeXml<Xsd129.dataResponse>(); //XSD v1.29
}
}
davy.ai
Una posible solución a este problema es crear una interfaz o clase base para las clases de respuesta que se utilizarán en todos los entornos. Esta interfaz o clase base debe contener todas las propiedades y métodos comunes a todas las versiones del XSD.
Luego, crea clases separadas para cada versión del XSD que implementen la interfaz o hereden de la clase base. Estas clases deben contener las propiedades y métodos adicionales específicos de sus respectivas versiones del XSD.
En tu función ReadDataAsync, puedes usar una declaración switch en lugar de una declaración if-else para determinar qué versión del XSD utilizar según el parámetro de entorno. Por ejemplo:
En este ejemplo, ResponseTypeA y ResponseTypeB son clases que implementan la interfaz IThingie y contienen las propiedades y métodos adicionales específicos de sus respectivas versiones del XSD. El constructor de cada clase acepta una instancia de la clase de respuesta del XSD y mapea sus propiedades a las propiedades de la interfaz o clase base.</xsd129.dataresponse></xsd125.dataresponse>