Fórum listar nomes de propriedades de um objeto ou classe #20470
23/07/2007
0
como eu faria isso com uma referencia de classe. Existe o tipo de referencia de classe no C#?
Vitor Rubio
Curtir tópico
+ 0Posts
24/07/2007
Rjun
object objeto; PropertyInfo[] properties; objeto = new object(); properties = objeto.GetType().GetProperties();
Gostei + 0
24/07/2007
Vitor Rubio
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!
Gostei + 0
24/07/2007
Vitor Rubio
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?
Gostei + 0
24/07/2007
Rjun
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.
Gostei + 0
24/07/2007
Vitor Rubio
Gostei + 0
01/08/2007
Bruno Belchior
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)