tengo 2 tipos: BaseQuestion
y Question
. Question
hereda algunas propiedades de BaseQuestion
. Ahora he creado una API web para hacer un BaseQuestion
disponible. El tipo de datos Question
tiene propiedades adicionales que no quiero poner a disposición. Tengo un método que recupera un Question
y mi plan inicial era simplemente reubicarlo implícitamente en BaseQuestion
. Pensé que perdería todas las propiedades adicionales que no quiero que sean accesibles y podría devolverlas. Bueno, no es así. Esto es lo que hago:C#: Superclase todavía tiene información subclase después de la conversión hacia arriba
Question q = allQuestions[0];
BaseQuestion bq = q;
string type = bq.GetType().ToString();
El tipo de bq es todavía "Pregunta". No puedo acceder a las propiedades de BaseQuestion, pero aún puedo verlas en el depurador y están en el resultado JSON que envío al cliente.
¿Alguna idea sobre cómo puedo "forzar" a bq a ser del tipo BaseQuestion
y no tener ninguna propiedad que esté definida en la subclase?
El tipo de la variable es bq BaseQuestion. El tipo de tiempo de ejecución del objeto al que se refiere bq es Pregunta. No estoy seguro de lo que quiere decir con "force bq to be de type BaseQuestion".Solo podrá acceder a los miembros de BaseQuestion a través de la variable bq. – lesscode
Creo que su confusión no es comprender que lo que ha dado son ** referencias ** a los objetos en la memoria. –
Simon, buen punto. Entonces permítanme reformular: ¿Cómo puedo crear un nuevo objeto de tipo Pregunta y copiar automáticamente todos los valores de las propiedades? Por automáticamente quiero decir que no ** quiero ** implementarlo. En mi humilde opinión, este escenario no es exclusivo de mi situación y debería estar cubierto por .NET. – Jan