listar nomes de propriedades de um objeto ou classe

23/07/2007

0

gostaria de saber: tendo um objeto instanciado, como eu faço para listar os nomes das propriedades desse objeto.

como eu faria isso com uma referencia de classe. Existe o tipo de referencia de classe no C#?


Vitor Rubio

Vitor Rubio

Responder

Posts

24/07/2007

Rjun

object objeto;
PropertyInfo[] properties;

objeto = new object();
properties = objeto.GetType().GetProperties();



Responder

24/07/2007

Vitor Rubio

Putz, cara, valeu mesmo, era o que eu precisava. Consegui listar todos os metodos e propriedades etc de minha classe.

Fiz um exemplinho. Isso é reflection, né?

Vou postar codigo:
Minha classe (bem basica):

public class clsCliente
{
//campos privados não aparecem
private int_Codigo;
private string_Nome;
private string_CPF;
private string_RG;

//campos protegidos não aparecem
protected string_CampoProtegido;
//campos publicos aparecem
public string_CampoPublico;

//propriedades publicas aparecem
public string Nome
{
//metodos acessores tambem
get {return _Nome; }
set {_Nome = value; }
}

public string RG
{
get {return _RG;}
set {_RG = value;}
}

public string CPF
{
get {return _CPF;}
set {_CPF = value;}
}

public int Codigo
{
get {return _Codigo;}
set {_Codigo = value;}
}

//metodo publico
public void MetodoPublico()
{
return;
}

//metodo proteido
public void MetodoProtegido()
{
return;
}

//metodo privado
public void MetodoPrivado()
{
return;
}
}


o código para listar tudo em um listbox, inclusive os valores das propriedades:
(esse codigo instancia o objeto em questão e dá um valor para suas propriedades)

private void button1_Click(object sender, System.EventArgs e)
{
clsCliente oCli = new clsCliente();
oCli.Nome = "jose";
oCli.Codigo = 1;
oCli.CPF = "29918516860";
oCli.RG = "335165989";

PropertyInfo[] properties = oCli.GetType().GetProperties();  
MethodInfo[] metodos = oCli.GetType().GetMethods();
FieldInfo[] campos = oCli.GetType().GetFields();
EventInfo[] eventos = oCli.GetType().GetEvents();
MemberInfo[] membros = oCli.GetType().GetMembers();


listBox1.Items.Add("-------- propriedades e valores --------");
foreach (PropertyInfo pi in properties)
{
string Prop = pi.Name;

MethodInfo ac = oCli.GetType().GetMethod("get_"+Prop);
ParameterInfo[] pai = oCli.GetType().GetMethod("get_"+Prop).GetParameters();

string Valor = ac.Invoke(oCli, pai).ToString();

listBox1.Items.Add(Prop+" "+Valor);
}


listBox1.Items.Add("-------- metodos --------");
foreach (MethodInfo mi in metodos)
{
string Met = mi.Name;
listBox1.Items.Add(Met);
}


listBox1.Items.Add("-------- campos (variaveis locais da classe) --------");
foreach (FieldInfo fi in campos)
{
string camp = fi.Name;
listBox1.Items.Add(camp);
}


listBox1.Items.Add("-------- eventos --------");
foreach (EventInfo ei in eventos)
{
string even = ei.Name;
listBox1.Items.Add(even);
}


listBox1.Items.Add("-------- todos os membros --------");
foreach (MemberInfo mei in membros)
{
string memb = mei.Name;
listBox1.Items.Add(memb);
}
}




Será que isso seria a base para um OPF caseiro?
so falta agora saber como lista os nomes de colunas de um recordset.


Muito obrigado!


Responder

24/07/2007

Vitor Rubio

Isso é possivel de fazer no delphi 7? não queria repetir a mesma pergunta em outro forum....

eu sei que dá para listar as propriedades no delphi, mas dá pra listar metodos, campos e coisas assim desse jeito, invocar os metodos ou pegar o valor das propriedades igual eu fiz aqui?


Responder

24/07/2007

Rjun

Sim, isso é reflection.
Quanto a fazer no Delphi, estou tentando implementar uma ideia que desenvolvi em C# no Delphi e estou sofrendo. Acho que da maneira que é feita no .NET não da pra fazer em Delphi não.


Responder

24/07/2007

Vitor Rubio

é.... estou vendo que, certas facilidades eu só vou obter quando portar minhas aplicações de delphi 7 pra delphi .net ... aí o reflection vai que vai...


Responder

01/08/2007

Bruno Belchior

Na verdade, a questão não é a o C# em si, mas sim a framework .NET que oferece todos essas facilidades... Quanto ao delphi, até onde sei, não é tão flexível assim não...


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar