A dúvida.
Como recuperar os nomes de métodos e propriedades de um objeto em C#?
Simples. Usando System.Reflection.
Para conhecer mais o namespace http://msdn.microsoft.com/pt-br/library/system.reflection.aspx.
Exemplo para recuperar métodos e propriedades.
Crie uma nova aplicação console e utilize o código abaixo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication
{
class MinhaClasse
{
#region Propriedades
public string Nome { get; set; }
public string Sobrenome { get; set; }
#endregion
#region Fields
public int Idade;
public int Ano;
#endregion
#region Métodos
public void Salvar()
{
Console.WriteLine("Nome : {0}\nSobrenome : {1}\nRegistro salvo", Nome, Sobrenome);
}
public int Somar(int v1, int v2)
{
return v1 + v2;
}
#endregion
#region Privados
private void Privado()
{
Console.WriteLine("Eu sou um método privado");
}
#endregion
}
class Program
{
static void Main(string[] args)
{
#region Criando objeto
MinhaClasse mc = new MinhaClasse();
mc.Nome = "Desenvolvedores";
mc.Sobrenome = "Net";
mc.Idade = 8;
mc.Ano = 2004;
#endregion
#region Recuperando as propriedades
Console.WriteLine("Recuperando a propriedade nome");
//recuperando as propriedades quando se sabe o nome
PropertyInfo pi = mc.GetType().GetProperty("Nome");
Console.WriteLine(pi.GetValue(mc, null).ToString());
Console.WriteLine("");
Console.WriteLine("Percorrendo as propriedades");
//percorrendo as propriedades
PropertyInfo[] pis = mc.GetType().GetProperties();
foreach (PropertyInfo p in pis)
{
Console.WriteLine("Propriedade:{0} - Valor: {1}", p.Name, p.GetValue(mc, null));
}
#endregion
#region Recuperando os campos
Console.WriteLine("");
Console.WriteLine("Recuperando o campo Idade");
//recuperando o canmpo quando se sabe o nome
FieldInfo fi = mc.GetType().GetField("Idade");
Console.WriteLine(fi.GetValue(mc).ToString());
Console.WriteLine("");
Console.WriteLine("Percorrendo os campos");
//percorrendo as propriedades
FieldInfo[] fis = mc.GetType().GetFields();
foreach (FieldInfo p in fis)
{
Console.WriteLine("Campo:{0} - Valor: {1}", p.Name, p.GetValue(mc));
}
#endregion
#region Recuperando métodos
Console.WriteLine("");
Console.WriteLine("Recuperando o método salvar");
//quando se sabe o nome
MethodInfo mi = mc.GetType().GetMethod("Salvar");
Console.WriteLine("");
Console.WriteLine("Executando método salvar");
mi.Invoke(mc, null);
Console.WriteLine("");
Console.WriteLine("Percorrendo métodos");
//nao sei os nomes
MethodInfo[] mis = mc.GetType().GetMethods();
foreach (MethodInfo m in mis)
{
Console.WriteLine("Método:{0} - Parâmetros: {1} - Retorno: {2}", m.Name, m.GetParameters().Count(), m.ReturnType);
}
//executando métodos com parâmetros
Console.WriteLine("");
Console.WriteLine("Executando métodos com parâmetros e recebendo um retorno");
mi = mc.GetType().GetMethod("Somar");
Console.WriteLine("Resultado do método somar: {0}", mi.Invoke(mc, new object[] { 26, 29 }));
Console.WriteLine("");
Console.WriteLine("Recuperando um método privado e executando");
mi = mc.GetType().GetMethod("Privado", BindingFlags.Instance |
BindingFlags.NonPublic);
mi.Invoke(mc, null);
#endregion
Console.ReadKey();
}
}
}
É isso ai pessoal ![]()
Até o próximo
♦ Marcelo













'

