2010-07-14 8 views
6

Estoy trabajando con un poco de código que está estructurado de la siguiente manera:¿Cómo configuro delegados entre mis clases?

La Forma A tiene los controles de usuario B y G dentro de ella. El control de usuario B tiene Control de usuario D dentro de él, y el control de usuario D tiene un método de "actualización". El control de usuario G tiene control de usuario F dentro y el control de usuario F necesita llamar al método de "actualización" en D.

1) Sin reestructurar el código (es código heredado, por lo que está fuera de la mesa como una opción) , ¿son los delegados la mejor manera de manejar este problema? Si no, ¿tienes otra sugerencia?

2) No tengo experiencia con las funciones de delegado. ¿Hay alguna buena base o ejemplo que pueda usar para adaptar mi código para lograr la funcionalidad deseada?

Respuesta

4

En primer lugar, F no debería saber nada acerca de D y su función de actualización. Agregue evento a F, que se genera cuando es necesario. Si el formulario A sabe sobre F, subscribe a este evento desde A. Si no, crea un evento similar en G y suscríbete a él en A. En un controlador de eventos, llama a Refresh directamente o llama al método B, que llama a D.refresh.

Parece que mi respuesta es aún menos legible que su pregunta :) Se debe tener este aspecto:

F plantea evento -> G maneja el evento de F y plantea evento -> Un maneja el evento de G y llama al método B -> método B llama D.refresh

+0

@Raven estás en el camino correcto con los delegados. Los eventos se declaran mediante delegados, por lo que aprender delegados primero es una buena idea. –

0

para ver este delegados: http://www.akadia.com/services/dotnet_delegates_and_events.html

para los eventos que tienen que asegurarse de que la materia pasa a través en el orden correcto. En el escenario actual, supongo que una buena forma sería exponer un Evento desde G que debería activarse cuando algo en F cambia. Y tendremos un manejador suscrito a este evento en B que eventualmente llamará a actualización. Habrá algunos eventos más y delegados involucrados para pasar las llamadas de padres a hijos y viceversa. Tenga en cuenta el concepto de un dispositivo mecánico: parte que COMIENZA que el movimiento es el que desencadena (levanta el evento) a los demás. Cuando otros se mueven, desencadenan otras partes relacionadas ... y, finalmente, algo muy lejano se mueve. Espero que ayude.

Cuestiones relacionadas