Delegados en c#

02/06/2005 - 16:01 por Kapsule | Informe spam
Buenas tardes a todos.

Tengo una duda. Resulta que tengo 2 clases, y me gustaria saber si creando
un delegado en la clase A si desde la B lo podria llamar. Por ejemplo dado
este ejemplo queira que cuando se llame al metodo "pruebas" de la clase B,
registre un
evento sobre el metodo A.Logger.

Alguien sabe si se puede hacer o que es lo mas factible?

Gracias

class A:System.Windows.Forms
{
public void A()
{
}

public void Logger(string msg)
{
}
}

Class B
{
public void pruebas()
{
}
}

Preguntas similare

Leer las respuestas

#1 Braulio Diez
02/06/2005 - 17:26 | Informe spam
Hola,

Si no me equivoco en tu explicación, creo que es algo parecido al
siguiente problema/solución:

ciertos valores

método delegado que nos diga que color coger,
ese delegado lo implementamos en nuestra clase ventana padre, así las
condiciones para colorear la celda es independiente para cada aplicación (si
hubieramos implementado la lógica para pintar dentro de la clase hija, no
sería facilmente portable a otros proyectos).

En esté link puedes encontrar un proyecto que crea las dos clases y el
delegado ("How do I color a individual cell depending upon its value or some
external method?" / método 3, hay un link para bajarte el proyecto):

http://www.syncfusion.com/FAQ/Windo...aspx#q745q

Un saludo
Braulio

"Kapsule" escribió:

Buenas tardes a todos.

Tengo una duda. Resulta que tengo 2 clases, y me gustaria saber si creando
un delegado en la clase A si desde la B lo podria llamar. Por ejemplo dado
este ejemplo queira que cuando se llame al metodo "pruebas" de la clase B,
registre un
evento sobre el metodo A.Logger.

Alguien sabe si se puede hacer o que es lo mas factible?

Gracias

class A:System.Windows.Forms
{
public void A()
{
}

public void Logger(string msg)
{
}
}

Class B
{
public void pruebas()
{
}
}
Respuesta Responder a este mensaje
#2 Octavio Hernandez
02/06/2005 - 21:08 | Informe spam
K,

Puedes definir el tipo:

// tipo-delegado para métodos similares a Logger()
public delegate void DelegadoLogger(string);

Luego en la clase B:

public class B
{
// delegado a método para registro
private DelegadoLogger logger = null;
// método para asignar el método de registro
public void AsignarMetodoLogger(DelegadoLogger d)
{
logger = d;
}
// tu método de pruebas
public void pruebas()
{
if (logger != null)
logger("Llamada al método pruebas()");
// etc...
}
}

En este momento, la clase 'B' ya está lista para utilizar como método de
registro CUALQUIER delegado que le asignes mediante AsignarMetodoLogger().
Si tienes un objeto 'a' de la clase 'A', y quieres que se utilice su método
Logger para registrar los mensajes sobre un objeto 'b' de la clase 'B', te
bastará con decir:

b.AsignarMetodoLogger(new DelegadoLogger(a.Logger));

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