Artigo .net magazine 71 - Dynamic types

Este artigo descreve algumas das capacidades dinâmicas introduzidas na nova versão do framework .NET. Através de um exemplo prático, iremos explorar as mais novas funcionalidades do DLR (Dynamic Language Runtime) e entender como utilizá-las em aplicações reais.

Atenção: esse artigo tem uma palestra complementar. Clique e assista!

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Do que trata o artigo

Este artigo descreve algumas das capacidades dinâmicas introduzidas na nova versão do framework .NET. Através de um exemplo prático, iremos explorar as mais novas funcionalidades do DLR (Dynamic Language Runtime) e entender como utilizá-las em aplicações reais.

Para que serve

Utilizando as novas capacidades dinâmicas do framework, é possível construir aplicações mais flexíveis, maleáveis e fáceis de adaptar e integrar. Os tipos dinâmicos se integram facilmente com as linguagens dinâmicas incorporadas ao framework, como Python e Ruby.

Em que situação o tema é útil

As funcionalidades dinâmicas podem ser úteis em diversos cenários, dentre eles podemos destacar a criação de web sites de forma rápida e simples, interoperabilidade entre aplicações e bibliotecas, utilização de metaprogramação, dentre outros. Existem diversas aplicações e usos para linguagens e funcionalidades dinâmicas.

Resumo do DevMan

As linguagens dinâmicas tiveram uma grande popularidade na década de 80. Eram bastante utilizadas para a criação de scripts. Pode-se dizer que elas perderam seu espaço na década de 90 para linguagens estaticamente tipadas. Com a grande procura por sistemas distribuídos e sendo executados na web, as linguagens dinâmicas voltaram a ter um grande foco. Suas implementações simples, facilidade de codificação e refatoração são alguns dos fatores positivos que levam ao seu sucesso. Neste artigo abordaremos algumas destas facilidades utilizando duas novas classes do .Net Framework 4.0: ExpandoObject e DynamicObject.

Na versão 4 do .NET framework, capacidades dinâmicas foram incluídas para fornecer flexibilidade às linguagens estaticamente tipadas, como o C# e o VB por exemplo, e também fornecer acesso aos recursos do framework para linguagens dinâmicas como Ruby e Python.

O responsável por tudo isso é uma parte do framework chamada DLR – Dynamic Language Runtime, que faz uma espécie de “meio de campo” entre as linguagens estaticamente tipadas e as linguagens e recursos dinâmicos do framework, como mostra a Figura 1.

Figura 1. Integração do Dynamic Language Runtime

O DLR nos possibilita criar objetos e classes dinâmicas no C# (como veremos adiante neste artigo) e também nos possibilita executar código escrito em linguagens como Python e o Ruby dentro do C# (ou VB).

A partir de agora exploraremos duas novas classes introduzidas no .NET 4.0, que são essenciais para trabalhar com esas capacidades: ExpandoObject e DynamicObject.

A classe ExpandoObject

ExpandoObject representa um objeto que pode ter propriedades e/ou métodos adicionados ou removidos em tempo de execução. O ExpandoObject nos permite criar objetos completamente dinâmicos, que terão seus membros avaliados somente durante a sua execução. Para demonstrar um pouco o funcionamento e utilidade desta classe, iremos criar como exemplo um simples mapeador para uma tabela do banco de dados. Este mapeador irá gerar um objeto do tipo ExpandoObject, onde suas propriedades serão as colunas de uma tabela do banco de dados lidas e geradas na execução do sistema."

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados