Desenvolvimento - C#

C# 4.0 - Tipos Dinâmicos

Nesse artigo será tratado sobre um funcionalidade bem legal, que acho que vai ajudar bastante nosso dia a dia... Que é Dynamic Typed Objects.

por Fabiano Belmonte



Olá Pessoal, ha algum tempo comecei a escrever sobre C# 4.0, acho que já passou da hora de voltar a escrever sobre o assunto.

Hoje vou escrever sobre um funcionalidade bem legal, que acho que vai ajudar bastante nosso dia a dia... Que éDynamic Typed Objects.

Uma feature bem legal do C# 4.0 e o suporte à programação dinâmica, isso e feito através da criação de tipos dinâmicos de objetos, o que acontéce e que esses tipos são resolvidos em tempo de execução e não em tempo de compilação.

O que muda? na declaração da variavel utilizamos a palavra "dynamic". A palavra-chave informa o compilador que o objeto foi declarado de forma dinâmica, deve ser tipado em tempo de execução usando o Dynamic Language Runtime (DLR).

Mais não confunda o"dynamic" com o"var", pois eles não são a mesma coisa!!! Pois o"var" e tipado em tempo de compilação diferente do"dynamic" que e tipado em tempo deexecução... que são bem diferentes.

Vamos fazer alguns exemplos:

Veja um cenário onde você precisa definir propriedades de um objeto, uma dll, e você vai fazer isso utilizandoReflection:

Assembly objLib= Assembly.LoadFile(@"C:\projects\Testes\bin\Debug\Testes.dll");
Type TesteObjType = objLib.GetType("Teste.TesteClassLib");
object Classobj= Activator.CreateInstance(TesteObjType);
PropertyInfo pInfo= TesteObjType.GetProperty("Nome");
pInfo.SetValue(Classobj, "Fabiano", null);

Agora vou fazer a mesma coisa utilizando"dynamic" basta mudar a terceira e a ultima linha para:

dynamic dynamicTesteObj = Activator.CreateInstance(Classobj);
dynamicTesteObj.Name = "Fabiano";

Simples não é? Vamos ver um slide da palestra do Anders Hejlsberg"s no PDC 2008.

Como podemos ver na figura acima, você pode chamar o método (s), tais como x.ToString (), y.ToLower (), z.Add (1), e ele irá funcionar sem problemas.

Esta é mais feature que nos oferece muitaflexibilidade.

Quero explorar mais o C# 4.0, pretendo fazer isso separando porfeatures...

Aceito sugestão de proxímasfeatures... Deixe um comentario sugerindo!

Espero que gostem...

Bons Codigos...

Fabiano Belmonte

Fabiano Belmonte

Fabiano Belmonte - Senior Architect, especialista em aplicações e-business com larga experiência em B2B (Submarino. Com e Saraiva.Com). Trabalha há 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas áreas: instituições financeiras (sistema SPB), e-commerce, gerenciamento logístico entre outras.