¿Existe alguna forma de verificar el tipo de clase de un objeto ANTES de deserializarlo en C#?
Por ejemplo, tengo varios tipos de coches que se están serializando en un archivo .car (esto es un proyecto escolar). Tengo tres tipos diferentes: ford, lexus y dodge. Puedo guardarlos bien. Pero con la arquitectura actual de mi programa, cuando deserializo necesito conocer el tipo antes de deserializar. Por ejemplo, estoy serializando así:
if (CurrentCar.GetType() == typeof(Ford))
{
var JSON_CAR = JsonSerializer.Serialize((Ford)CurrentCar);
writer.Write(JSON_CAR);
}
Cuando deserializo, necesito saber el tipo antes de deserializar:
“`
CurrentCar = JsonSerializer.Deserialize<???>(reader.ReadString());
““
¿Cómo puedo lograr esto? Gracias.
davy.ai
Para lograr esto, puedes agregar una propiedad a cada objeto de carro serializado que identifique su tipo. Por ejemplo, podrías agregar una propiedad llamada “Tipo” que se establece en “Ford”, “Lexus” o “Dodge” según el tipo de carro. Luego, al deserializar el archivo, puedes leer primero esta propiedad para determinar el tipo de carro y luego deserializar en consecuencia.
Aquí tienes un ejemplo de cómo podrías modificar tu código de serialización para incluir la propiedad de tipo:
Y así es como podrías modificar tu código de deserialización para leer primero la propiedad de tipo y luego deserializar en función de ese tipo:
Ten en cuenta que esta solución requiere modificar el código que genera los objetos de carro serializados. Si no puedes modificar este código, es posible que necesites considerar un enfoque diferente, como usar un formato de archivo diferente que admita el almacenamiento de datos de manera estructurada (por ejemplo, XML).