C# 4.0 – Tipos Dinâmicos
Bruno Kenj | C#
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
maio 7, 2010 at 5:30 am
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’.