Conhecimento de uma classe sobre si mesma ou RTTI

11/07/2007

0

Gostaria de poder listar, num listbox, todas as propriedades de uma classe, e se possível seus tipos.

Minha idéia é: dada uma determinada classe, salvar seu estado num banco de dados, onde cada tabela seria uma classe, cada registro um objeto diferente e cada campo de uma tabela seria uma propriedade.

Para isso eu estou usando o visual studio 2003, mas acho que em borland C# builder é a mesma coisa. (esse forum é só para borland c builder ou para c no geral?)


Grato


Vitor Rubio

Vitor Rubio

Responder

Posts

23/08/2007

Cd.artista

Já passei por isso...

acrescenta na sua classe o seguinte namespace:

using System.Reflection;


Estou usando o Visual Studio 2005, não sei se tem diferença pra sua versão.
Agora vamos criar uma coleção de strings para receber as propriedades e outra pra receber os tipos:

List<string> propi = new List<string>();
List<string> tipo = new List<string>();


Vamos fazer um loop pra carregar nossas coleções:

//Isso vai passar por cada propriedade da classe e pegar um lista de informações.
foreach(PropertyInfo prop in this.GetType().GetProperties()) {
//agora vamos preencher com os dados.
propi.Add(prop.Name);
tipo.Add(prop.PropertyType.Name);
}


Pronto preenchemos oque precisamos: Nomes e Tipos.
Basta retornar as strings;

//Transfoma as List em array.
string[] p = propi.ToArray();
string[] t = tipo.ToArray();


Pronto agora é só retirar dos araays e colocar onde quiser.
Espero que consiga entender.


Responder

23/08/2007

Rjun

No VS 2003 não dá para usar as listas genéricas. Será necessário jogar as propriedades em um ArrayList por exemplo


Responder

24/08/2007

Vitor Rubio

Eu já tinha percebido isso ^^, mas esses generics dá pra usar com o .Net framework 2.0, usando o compilador csc.exe que vem nesse framework.

Só não sei se dá para configurar o vs2003 para usar o .Net 2.0, tenho quase certeza que não dá, mas mesmo assim dá pra fazer o programa no bloco de notas, ou notepad++ e compilar via linha de comando, ou usar uma IDE open-source, como o sharp develop.

Mas nesse caso nem precisa usar generics, basta criar um descendnete de arraylist que agrupe elementos do tipo string ou fazer o typecasting mesmo ^^


Responder

24/08/2007

Rjun

Você pode usar a versão Express da IDE do C#.


Responder

24/08/2007

Cd.artista

Ou Tenta usar um aray no lugar do List colocando um número de itens do array maior que o número de colunas da sua tabela.


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