Sencilla para Expertos

12/07/2005 - 17:53 por Javier | Informe spam
object x;
MessageBox.Show(x.texto1);

Hola,
Alguno sabe como compilar una aplicación en c#
que tenga este "inconveniente", aquí expongo un ejemplo sencillo, pero mi
necesidad es para un desarrollo un tanto mas complejo.
El mismo codigo en Visual Basic .Net compila sin problemas ya que el
compilador supone que el objeto declarado en tiempo de ejecución podría
llegar a tener la propiedad texto 1.
En cambio en C# no compila.
espero vuestra ayuda
muchas gracias !

Preguntas similare

Leer las respuestas

#6 Kravek
14/07/2005 - 18:12 | Informe spam
También puedes hacer un casting al tipo necesario

"Tristan" escribió en el mensaje
news:%23A5fiu$
Solo te añadiría que puedes hacer eso mismo en C# mediante reflection.

Pero reflection (o strict off en vb.net) debería ser siempre la última
opción. La mejor solución cuano sea posible, es declarar tu variable x
mediante un tipo base o interface, que realmente incluya el miembro
Texto1.

La variable "x" para que funcione tu código, debe ser una instancia de una
clase, que necesariamente incluya un miembro Texto1. Estas clases podrían
ser las siguientes:

class Clase1
{
public string Texto1;
}

class Clase2
{
public string Texto1;
}

Para que tu código funcione correctamente tan solo tienes que hacer uso
del polimorfismo:

class BaseTexto1
{
public string Texto1;
}

class Clase1: BaseTexto1
{
}

class Clase2: BaseTexto1
{
}


De esta forma, desconocerás el tipo de x, pero podrás utilizar el miembro
Texto1:

BaseTexto1 x = ...;
MessageBox.Show(x.Texto1);

En muchas ocasiones se utilizan interfaces en lugar de herencia para
lograr esto mismo. La interface o la clase base definirán el
comportamiento externo conocido del objeto.


Juan Carlos Badiola
MVP - C#

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida