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
 

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.

Preguntas similares