C# 4.0 – Tipos Dinâmicos

O C# 4.0 introduziu um novo tipo, chamado dynamic. É fácil observar que trabalhar com estes tipos, requer cuidado e se bobear, podemos ter problemas. Vejam o assunto no blog do Bassi: C#4: Nem tanto dinamismo assim?. Realmente é esquisito pensar que não vai haver erro em tempo de compilação na linha 6. O Bassi explica como a chamada dinâmica se propaga e até o retorno do método Funcao acaba virando dinâmico. Neste casso, ocorre um erro em execução, pois não será possível converter o int para DateTime.

Mas, apesar disso tudo, eu achei muito interessante e fácil de trabalhar, em determinados casos.

Acabei de mostrar no post Phantom: Easy reflection in .NET. Agora genérico. como o Phantom e um método genérico facilitam recuperar propriedades através do nome de tipos anônimos. O Israel comentou se não seria mais fácil utilizar o dynamic. Com certeza! Vamos ver.

Retornando o tipo anônimo como dinâmico (o retorno poderia ser object):

private dynamic RecuperarObjAnonimo()
{
    return new
    {
        Nome = "Bruno Kenj",
        UG = "BRASILDOTNET",
        Idade = 26
    };
}

Utilizando o tipo dinâmico:

dynamic item = RecuperarObjAnonimo();
string nome = item.Nome;
int idade = item.Idade;

Bem mais fácil, não? Bem lembrado Israel. Só devemos tomar cuidado, pois se a propriedade não existir no objeto, uma exceção do tipo RuntimeBinderException será lançada.

MSDN: dynamic (C# Reference)
MSDN: Using Type dynamic (C# Programming Guide)
Blog Israel: Adicionando Membros em Tempo de Execução

One Response to “C# 4.0 – Tipos Dinâmicos”

  1. Inclusive, o SyntaxHighlighter ainda não faz a marcação da palavra “dynamic”. Para adicionar, basta editar o arquivo ’syntaxhighlighter/scripts/shBrushCSharp.js’ adicionando a palavra na variável ‘keywords’.

Leave a Reply