As Propriedades são os assessores diretos dos Fields (Campos) e expõem os “valores” de um objeto.
Para este post, será necessário a utilização da classe (Usuario) descrita no post (Reflection Parte 2 – Construtores)
Pensemos em nosso objeto de Usuário, ele tem alguns atributos (Propriedades) tais como: Nome, Idade e Data do Nascimento
Recuperando todas as Propriedades
C#
// Cria Objetos Type meuTipo; PropertyInfo[] properties; // Recupera o Tipo Desejado meuTipo = typeof(Usuario); // Recupera Todas as Propriedades properties = meuTipo.GetProperties();
VB.Net
' Cria Objetos Dim meuTipo As Type Dim properties As PropertyInfo() ' Recupera o Tipo Desejado meuTipo = GetType(Usuario) ' Recupera Todas as Propriedades properties = meuTipo.GetProperties()
Recuperando uma (01) Propriedade Específica
C#
// Cria Objetos
Type meuTipo;
PropertyInfo nameProperty;
PropertyInfo idadeProperty;
// Recupera o Tipo Desejado
meuTipo = typeof(Usuario);
// Recupera Todas as Propriedades
nameProperty = meuTipo.GetProperty("Nome");
idadeProperty = meuTipo.GetProperty("Idade");
VB.Net
' Cria Objetos
Dim meuTipo As Type
Dim nameProperty As PropertyInfo
Dim idadeProperty As PropertyInfo
' Recupera o Tipo Desejado
meuTipo = GetType(Usuario)
' Recupera Todas as Propriedades
nameProperty = meuTipo.GetProperty("Nome")
idadeProperty = meuTipo.GetProperty("Idade")
Alterando o Valor de uma Propriedade
Para alterar o valor de uma Propriedade utilizaremos o método (SetValue) do Tipo que contém 2 parâmetros:
- A instância do objeto que queremos alterar o valor da Propriedade;
- O novo valor da Propriedade;
C#
// Cria Objetos
Type meuTipo;
PropertyInfo nameProperty;
PropertyInfo idadeProperty;
Usuario novoUsuario = new Usuario();
// Recupera o Tipo Desejado
meuTipo = typeof(Usuario);
// Recupera Todas as Propriedades
nameProperty = meuTipo.GetProperty("Nome");
idadeProperty = meuTipo.GetProperty("Idade");
// Altera o Nome e a Idade do Usuário
nameProperty.SetValue(novoUsuario, "Guilherme Bacellar Moralez", null);
idadeProperty.SetValue(novoUsuario, 25, null);
VB.Net
' Cria Objetos
Dim meuTipo As Type
Dim nameProperty As PropertyInfo
Dim idadeProperty As PropertyInfo
Dim novoUsuario As New Usuario()
' Recupera o Tipo Desejado
meuTipo = GetType(Usuario)
' Recupera Todas as Propriedades
nameProperty = meuTipo.GetProperty("Nome")
idadeProperty = meuTipo.GetProperty("Idade")
' Altera o Nome e a Idade do Usuário
nameProperty.SetValue(novoUsuario, "Guilherme Bacellar Moralez", Nothing)
idadeProperty.SetValue(novoUsuario, 25, Nothing)
Note que após a execução do método (SetValue) a Propriedade do objeto Usuario conterá a string “Guilherme Bacellar Moralez” para o Nome e “25” para a Idade.
Recuperando o Valor de uma Propriedade
Igualmente podemos recuperar o valor da Propriedade com o método (GetValue) que recebe apenas um único parâmetro:
- A Instância do Objeto que contém a Propriedade que se deseja recuperar
C#
// Cria Objetos
Type meuTipo;
PropertyInfo nameProperty;
PropertyInfo idadeProperty;
Usuario novoUsuario = new Usuario();
string nomeDoUsuario;
int idadeDoUsuario;
// Recupera o Tipo Desejado
meuTipo = typeof(Usuario);
// Recupera Todas as Propriedades
nameProperty = meuTipo.GetProperty("Nome");
idadeProperty = meuTipo.GetProperty("Idade");
// Altera o Nome e a Idade do Usuário
nameProperty.SetValue(novoUsuario, "Guilherme Bacellar Moralez", null);
idadeProperty.SetValue(novoUsuario, 25, null);
// Recupera os Valores
nomeDoUsuario = (string) nameProperty.GetValue(novoUsuario, null);
idadeDoUsuario = (int) idadeProperty.GetValue(novoUsuario, null);
VB.Net
' Cria Objetos
Dim meuTipo As Type
Dim nameProperty As PropertyInfo
Dim idadeProperty As PropertyInfo
Dim novoUsuario As New Usuario()
Dim nomeDoUsuario As String
Dim idadeDoUsuario As Integer
' Recupera o Tipo Desejado
meuTipo = GetType(Usuario)
' Recupera Todas as Propriedades
nameProperty = meuTipo.GetProperty("Nome")
idadeProperty = meuTipo.GetProperty("Idade")
' Altera o Nome e a Idade do Usuário
nameProperty.SetValue(novoUsuario, "Guilherme Bacellar Moralez", Nothing)
idadeProperty.SetValue(novoUsuario, 25, Nothing)
' Recupera os Valores
nomeDoUsuario = CStr(nameProperty.GetValue(novoUsuario, Nothing))
idadeDoUsuario = CInt(idadeProperty.GetValue(novoUsuario, Nothing))
Observe que o método (GetValue) retorna sempre o conteúdo da Propriedade como um tipo Objeto, então, você sempre terá que realizar uma conversão (Cast) para o tipo da variável desejada (em nosso exemplo é String e Inteiro).
Se você estiver acompanhando a série de artigos sobre Reflexão desde o início irá estranhar que este artigo em específico é muito parecido com o de Fields (Campos), mas, é isso mesmo.
A forma de trabalho com eles até o momento é bem parecida, mas, iremos mostrar comportamentos mais adiante que as Propriedades e que os Fields (Campos) não tem.
Até o próximo!
Posts Relacionados:



Be the first to start a conversation