Revista MSDN Magazine Edição 16 - Utilizando Reflection no .NET Framework
Utilizando Reflection no .NET Framework<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
· Biblioteca Reflection do .NET Framework
· Vínculo automático entre as camadas de dados, interface e negócio
C# e MS-Access
reflection.zip (175KB)
Reflection é uma biblioteca do .NET Framework que disponibiliza para os desenvolvedores desmembrar as características (atributos, métodos, interface, campos e construtores) de um objeto através do seu tipo. Esta prática e cômoda biblioteca é a chave que oferece a possibilidade de implementarmos a codificação necessária para manter a persistência automática entre as camadas de dados (tabelas), de negócio (classes) e interface (formulários) em nossos sistemas.
Projeto de exemplo em três camadas
Há muito que os desenvolvedores vêm trabalhando uma forma para aumentar a produtividade e padronizar o processo de desenvolvimento de sistemas. Um bom exemplo é a utilização dos application blocks. Entretanto, algumas tarefas repetitivas continuam em nosso dia-a-dia de desenvolvimento de sistemas. Uma delas é o processo de capturar as informações que estão em um formulário, carregá-los nas classes de negócio e depois gravar/excluir/atualizar em um banco de dados. Feito isto, o processo inverso (dados para classes de negócios, classes de negócios para controles do formulário) deve ser implementado. Como este processo é encontrado facilmente em sistemas, então, porque não termos um código padrão que permita a simplificação desse processo?
Hoje o .NET Framework já disponibiliza uma série de recursos que já fazem este vínculo automático. Um deles é o uso de Databind, porém este recurso nos obriga a configurar campo-a-campo, atributo-a-atributo da aplicação. É em busca de uma forma mais simples e única, que possa ser utilizada por todos os aplicativos, é que iremos nos aventurar através da biblioteca de Reflection, onde mostrarei como será possível vincular os dados de uma tabela aos atributos de uma classe de negócio, e estes atributos, aos controles do formulário (Interface) e vice-versa.
Para isso, iremos criar uma classe de controle que fará este vínculo automático. Esta classe deverá ser herdada por todas as classes de negócio, evitando que o desenvolvedor tenha que se preocupar em escrever este vínculo campo-a-campo, atributo-a-atributo no código fonte.
Veja um exemplo de um cadastro de usuário onde utiliza-se o Reflection para aumentar a produtividade no desenvolvimento de sistemas.
Camada de Dados (Figura 1): tabela chamada Clientes com os seguintes campos:
Figura 1 - Estrutura da tabela de clientes
Camada de Negócio: será representada por uma classe chamada cliente (Figura 2 e
Listagem 1). Seus atributos terão o mesmo nome e o tipo de dados dos campos da tabela. Isto se deve ao fato que o vínculo, entre a tabela e a classe de negócio, será feito de uma forma automática, através das funções encontradas na biblioteca de Reflection.