Herencia de clases

15/05/2010 - 18:16 por Salvador Gurrera | Informe spam
Hola, quiero hacer una utilidad para convertir campo, mediante la
herencia de clases. Lo que quiero hacer es esto:

dataRow[nombreCampo].toInt ( y que lo convierta a int, lo mismo con los
otros tipos)

Si me pueden ayudar.

Gracias, un saludo

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
15/05/2010 - 18:53 | Informe spam
"Salvador Gurrera" wrote in message
news:
Hola, quiero hacer una utilidad para convertir campo, mediante la herencia
de clases. Lo que quiero hacer es esto:

dataRow[nombreCampo].toInt ( y que lo convierta a int, lo mismo con los
otros tipos)



Bien, eso se hace con un método extensor. El problema de hacerlo sobre
dataRow[nombreCampo] es que este último es de tipo Object, y en general no
es buena idea "polucionar" la clase Object con métodos extensores ya que
todas las demás clases heredan de ella y por lo tanto todas las clases
existentes recibirían este extensor.
No obstante, si a pesar de ello quieres hacerlo, la sintaxis es esta:

public static class Extensores
{
public int toInt(this object valor)
{
return Convert.ToInt32(valor);
}
}

Nota: Los extensores solo funcionan a partir de C# 3.0 (Visual Studio
2008).

Nótese que aquí no existe herencia de clases. Si quisieras hacerlo por
herencia, sería un poco complicado, porque tendrías que heredar de la clase
DataRow, suplantar el indexador "this" (que es el que se ejecuta cuando
pides [nombreCampo]), hacer que devuelva una clase que no sea Object, y en
dicha clase meter el método toInt. La dificultad está en que esta última
clase tenga todos los comportamientos que originalmente tenía el
dataRow[nombreCampo], por ejemplo, si quisieras que siguiese funcionando una
construcción tal como (int)dataRow[nombreCampo] tendrías que añadir en la
clase un operador de conversión a int, y lo mismo con todos los posibles
tipos que puedan existir en tu datarow.
Respuesta Responder a este mensaje
#2 Salvador Gurrera
15/05/2010 - 19:58 | Informe spam
El 15/05/2010 18:53, Alberto Poblacion escribió:
"Salvador Gurrera" wrote in message
news:
Hola, quiero hacer una utilidad para convertir campo, mediante la
herencia de clases. Lo que quiero hacer es esto:

dataRow[nombreCampo].toInt ( y que lo convierta a int, lo mismo con
los otros tipos)



Bien, eso se hace con un método extensor. El problema de hacerlo sobre
dataRow[nombreCampo] es que este último es de tipo Object, y en general
no es buena idea "polucionar" la clase Object con métodos extensores ya
que todas las demás clases heredan de ella y por lo tanto todas las
clases existentes recibirían este extensor.
No obstante, si a pesar de ello quieres hacerlo, la sintaxis es esta:

public static class Extensores
{
public int toInt(this object valor)
{
return Convert.ToInt32(valor);
}
}

Nota: Los extensores solo funcionan a partir de C# 3.0 (Visual Studio
2008).

Nótese que aquí no existe herencia de clases. Si quisieras hacerlo por
herencia, sería un poco complicado, porque tendrías que heredar de la
clase DataRow, suplantar el indexador "this" (que es el que se ejecuta
cuando pides [nombreCampo]), hacer que devuelva una clase que no sea
Object, y en dicha clase meter el método toInt. La dificultad está en
que esta última clase tenga todos los comportamientos que originalmente
tenía el dataRow[nombreCampo], por ejemplo, si quisieras que siguiese
funcionando una construcción tal como (int)dataRow[nombreCampo] tendrías
que añadir en la clase un operador de conversión a int, y lo mismo con
todos los posibles tipos que puedan existir en tu datarow.




Muchas gracias por tu gran ayuda
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida