Artigo Clube Delphi 111 - RTTI
Artigo da Revista Clube Delphi Edição 111.
Através da RTTI podemos obter todos os métodos e propriedades, com seus valores, de uma classe instanciada. Por classe entenda-se as suas, que você pode vir a criar, ou até mesmo as existentes no Delphi, como TEdit, TClientDataSet. De posse dessas informações, podemos utilizá-las da forma que for necessário, podendo até mesmo alterar seus valores (no caso de propriedades), usando RTTI.
O uso da RTTI está quase sempre ligado a frameworks que venham a ser desenvolvidos para centralização e otimização dos sistemas. Esses frameworks, grandes ou não, tem por objetivo trazer maior flexibilidade a um sistema e produtividade ao desenvolvedor. Um exemplo seria um framework de validação, onde centralizaríamos na classe a ser validada todo o código responsável por isso, ao invés de replicar por todo sistema uma regra de negócio.
O Delphi sempre ofereceu recursos de reflexão, porém estes eram limitados quando comparados com a reflexão existente no .Net ou Java. Agora, na versão 2010, a RTTI passou por uma grande atualização trazendo benefícios esperados pelos programadores Delphi. Neste artigo vamos entender o que é reflexão e como ela foi implementada no Delphi. Também veremos como utilizar na prática o novo recurso adicionado, chamado Custom Attribute, além de conhecer novas perspectivas de desenvolvimento.
Runtime Type Information (RTTI) é um paradigma de programação em que a informação sobre um tipo pode ser obtido em tempo de execução. As versões anteriores do Delphi já davam suporte à RTTI, porém de uma forma limitada. As propriedades deveriam ser colocadas na seção published. As classes deveriam ter as diretivas {$M+} para que pudessem ser lidas via RTTI ou herdar de uma classe que a possuísse. Alguns tipos não podiam ser publicados como o Real48, array, entre outros.
Sem falar que o compilador não nos dava informações como, por exemplo, quais propriedades foram declaradas no objeto que está sendo lido e quais são herdadas. Pode não parecer, mas esta informação é de extrema importância quando pensamos em Mapeamento Objeto Relacional."
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo