domingo, maio 17, 2009

C# 4.0 - Acesso a tipos dinâmicos

Anteriomente falamos sobre o lançamento do C# 4.0, linguagem de programação para o .NET Framework da Microsoft que virá juntamente com o novo IDE da empresa para o desenvolvimento de aplicações para desktop e web.

Hoje, explicaremos um pouco mais sobre as modificações inerentes ao C#, especialmente em sua relação com produtos de outras linguagens.

Bom, estamos acostumados a utilizar atualmente classes tipadas estáticamente do próprio .NET framework e invocando seus próprios métodos. Por exemplo, tomemos o exemplo de uma classe que implemente uma Calculadora, segundo essa abordagem o código necessário para se executar uma operação de soma seria mais ou menos o seguinte:

Calculator calc = GetCalculator();
int sum = calc.Add(10, 20);



Já quando decidimos usar uma classe não tipada estaticamente, como as contruídas em COM, Ruby, Python ou até Javascript. Por não possuir um sistema de tipos reconhecido naturalmente pelo .NET Framework, devemos usar Reflection para descobrir os atributos de tipo em tempo de execução e dinamicamente invocar o método desejado como o mostrado abaixo:

object calc = GetCalculator();
Type type = calc.GetType();
object result = type.InvokeMember("Add",
BindingFlags.InvokeMethod, null,
new object[] { 10, 20 });
int sum = Convert.ToInt32(result);


Com o advento do .NET Framework 3.5, o tratamento do mesmo tipo de problema vindo de classes Javascript, poderia ser resolvido da seguinte forma:

ScriptObect calc = GetCalculator();
object result = calc.InvokeMember("Add", 10, 20);
int sum = Convert.ToInt32(result);


Agora, com o C# 4.0 o uso de classes dinâmicas tomará a seguinte forma:

dynamic calc = GetCalculator();
int result = calc.Add(10, 20);


Essa simplificação no uso de tipos dinâmicos torna-se possivel pela adição do novo tipo estático Dynamic que converte um objeto dinâmico em estático. Parece algum tipo de incoerência mas essa abordagem tem suas vantagens, principalmente por possibilitar uma maior interação entre os objetos estaticamente nativos do .NET e classes oriundas de diversas origens, bem como estimula o uso da codificação estática e seus benefícios pelo maior período de tempo possível.

Por hoje é só, logo voltaremos com novas informações a respeito das mudanças na linguagem C# e no próprio .NET Framework.

0 comentários:

Related Posts Plugin for WordPress, Blogger...