Implementar algo obligatoriamente

14/10/2007 - 20:47 por Clara | Informe spam
Hola,
Es posible hacer de alguna forma que los formularios heredados de uno base
DEBAN implementar un método o una propiedad?
Tengo un formulario B del que heredan H1 y H2. Me gustaria definir "algo"
de forma que todos los herederos de B debieran implementar
Yo habia creado una interfaz IP y habia hecho:
class B : IP
{
//el formulario base implementa IP
}

pero como obligo a que los herederos H1 y H2 tambien lo hagan?

Grácias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
14/10/2007 - 21:02 | Informe spam
"Clara" wrote in message
news:%
Es posible hacer de alguna forma que los formularios heredados de uno base
DEBAN implementar un método o una propiedad?
Tengo un formulario B del que heredan H1 y H2. Me gustaria definir "algo"
de forma que todos los herederos de B debieran implementar
Yo habia creado una interfaz IP y habia hecho:
class B : IP
{
//el formulario base implementa IP
}

pero como obligo a que los herederos H1 y H2 tambien lo hagan?



Cuando en una clase base quieres que las clases hijas deban
obligatoriamente implementar un método, lo que se hace es marcar el método
como abstracto:

protected abstract void DebeImplementarse(tipo args);

Para poder tener un método abstracto, la propia clase también debe
marcarse como abstracta añadiéndole la palabra "abstract" a la declaración
de la clase.

Esto vale para cualquier clase en C#, pero si lo haces sobre la clase que
implementa un formulario, tiene el problema de que deja de funcionar el
diseñador gráfico, que necesita crear una instancia de la clase para
funcionar en tiempo de diseño, y como la clase es abstracta no la puede
instanciar (solo se pueden instanciar las clases hijas que implementen el
método y por tanto no sean abstractas). Por lo menos, asi era con Visual
Studio 2003, me imagino que con el 2005 seguirá pasando lo mismo.
Respuesta Responder a este mensaje
#2 Clara
14/10/2007 - 23:08 | Informe spam
Hola Alberto,

Si, había probado lo del método abstracto, pero precisamente no lo he hecho
porque debia declarar el formulario como abstracto.
Bueno. veré como lo hago.
Muchas gracias

"Alberto Poblacion"
escribió en el mensaje news:
"Clara" wrote in message
news:%
> Es posible hacer de alguna forma que los formularios heredados de uno


base
> DEBAN implementar un método o una propiedad?
> Tengo un formulario B del que heredan H1 y H2. Me gustaria definir


"algo"
> de forma que todos los herederos de B debieran implementar
> Yo habia creado una interfaz IP y habia hecho:
> class B : IP
> {
> //el formulario base implementa IP
> }
>
> pero como obligo a que los herederos H1 y H2 tambien lo hagan?

Cuando en una clase base quieres que las clases hijas deban
obligatoriamente implementar un método, lo que se hace es marcar el método
como abstracto:

protected abstract void DebeImplementarse(tipo args);

Para poder tener un método abstracto, la propia clase también debe
marcarse como abstracta añadiéndole la palabra "abstract" a la declaración
de la clase.

Esto vale para cualquier clase en C#, pero si lo haces sobre la clase


que
implementa un formulario, tiene el problema de que deja de funcionar el
diseñador gráfico, que necesita crear una instancia de la clase para
funcionar en tiempo de diseño, y como la clase es abstracta no la puede
instanciar (solo se pueden instanciar las clases hijas que implementen el
método y por tanto no sean abstractas). Por lo menos, asi era con Visual
Studio 2003, me imagino que con el 2005 seguirá pasando lo mismo.



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