Agora, para exemplificar, vamos criar uma classe chamada Funcionario, veja como abaixo:
{
public Funcionario(int codigo, string nome)
{
Codigo = codigo;
Nome = nome;
}
public int Codigo { get; set; }
public string Nome { get; set; }
public event EventHandler PegarValor;
}
Feito isso, já posso passar para a utilização propriamente dita do reflection. O primeiro passo é criar o objeto Funcionario passando os valores para seu construtor. Veja o exemplo abaixo:
Funcionario FUNC = new Funcionario(123, "Elias Medeiros");
Agora, vamos atribuir os tipos referentes ao objeto Funcionario para uma variável do tipo Type. Com isso, vamos conseguir retorna qualquer tipo que o objeto Funcionario possuir. Veja abaixo:
Type Tipos = FUNC.GetType();
Vamos agora percorrer os tipos do objeto Funcionario.
1º - Propriedades: Reparem que estou criando uma variável (PI) do tipo PropertyInfo para retornar as propriedades do objeto Funcionario. Para isso eu passo a variável Tipos.GetProperties()...
foreach (PropertyInfo PI in Tipos.GetProperties())
{
Console.WriteLine(string.Format("Propriedade: {0} - Valor: {1}", PI.Name, PI.GetValue(FUNC, null)));
}
2º - Construtores e parametros: Neste caso, vamos criar uma variável (CI) do tipo ConstructorInfo. Para isso, eu passo a variável Tipos.GetConstructors().... Dá mesma forma, para pegar seus parâmetros, sendo que a variável será do tipo ParameterInfo. Para este exemplo, eu passo a variável CI.GetParameters()....
foreach (ConstructorInfo CI in Tipos.GetConstructors())
{
Console.WriteLine(string.Format("Construtor: {0}", CI.Name));
foreach (ParameterInfo PI in CI.GetParameters())
{
Console.WriteLine(string.Format(" Parametros: {0}", PI.Name));
}
}
3º - Eventos: Para o caso de eventos, segui o mesmo princípio. Sendo que a variável será do tipo EventInfo. Assim, eu passo a variável Tipos.GetEvents()....
foreach (EventInfo EI in Tipos.GetEvents())
{
Console.WriteLine(string.Format("Eventos: {0}", EI.Name));
}
Então pessoal até uma próxima dica e fiquem com Deus.