terça-feira, 6 de julho de 2010

Investigando um objeto delegate

Este método irá imprimir os nomes dos métodos mantidos pelo tipo delegate de entrada, e o nome da classe que define o método.

static void MostrarInformacaoDelegate (Delegate obj)
{
     // Imprime o nome de cada membro da lista de chamados do delegate.
     foreach(Delegate delegate in obj.GetInvocationList())
     {
          Console.WriteLine("Nome do Método: {0}", delegate.Method);
          Console.WriteLine("Nome do Tipo: {0}", delegate.Target);
     }


     Console.ReadLine();
}

O método acima itera sobre o array System.Delegate retornado por GetInvocationList(), chamando as propriedades Target e Method de cada objeto.