March 2010 Entradas

C# 4.0 - Dynamic Binding

Postado em Monday, March 29, 2010 9:19 PM | Feedback (0)

Você sabe o que é Duck Typing? Duke Typing é um processo para definir tipos, métodos e operadores em tempo de execução. Se você tem um objeto que anda como um pato, faz quack como um pato logo é um pato.

O C# 4.0 trouxe esse recurso na forma de Dynamic Binding. Esse recurso é útil quando sabemos que um método ou operador existem no tipo mas estaticamente o compilador não tem condições de saber. Basicamente a palavra reservada dynamic diz ao compilador para ficar sossegado que em tempo de execução ele saberá o que fazer.

Vamos entender um pouco sobre as diferenças entre Static Binding e Dynamic Binding.

Conheceremos melhor o que é um e o que é outro brincando com a seguinte classe:

class ClassXYZ
{
public void Foo(int id)
{
Console.WriteLine("Persist.Foo");
}
}

Vamos supor que queremos instanciar um objeto do tipo ClassXYZ e chamar o método Foo(int). No C# atual nós temos algumas opções, vejamos:

ClassXYZ staticObj = new ClassXYZ();
staticObj.Foo(42);

O código acima instância um objeto ClassXYZ e chama o método Foo, em tempo de compilação o conhecemos exatamente de que tipos estamos falando.

Nós também podemos chamar o método Foo de uma outra forma. Podemos usar reflection para criar um objeto ClassXYZ depois pegamos o método Foo e invocamos o método passando o argumento 42.

Vejam só como ficaria o método.

object reflectionObj = Activator.CreateInstance(Type.GetType("ConsoleApplication1.ClassXYZ"));
MethodInfo method = reflectionObj.GetType().GetMethod("Foo");
method.Invoke(reflectionObj, new object[] { 42 });

Poxa vida! Agora você complicou hein! Reflection é uma técnica avançada e é bastante utilizada em frameworks de persistência (conheça o Paulovich.Data no Codeplex).

Isso é Static Binding, você precisa explicitar para o compilador exatamente quais são os tipos sendo usados.

Já com o C# 4.0 nós temos um recurso bastante valioso chamado Dynamic Binding. Com ele nós podemos ter um código semelhante a isso:

dynamic obj = GetObject();
obj.Foo(42);

Onde GetObject fica encarregado de em tempo de execução definir qual o tipo sendo usado. Com a palavra reservada dynamic nós limpanos o nosso código de Reflections mirabolantes e passamos a ter um código mais legível.

É importantíssimo ressaltar que esse recurso não veio para substituir a forma convencional como declaramos os tipos e chamamos os métodos. Essa nova característica da linguagem veio para atender aos programadores que precisavam fazer malabarismo para realizar determinadas operações.

Instalando o TFS 2010 em 10 passos

Postado em Sunday, March 21, 2010 3:48 PM | Feedback (0)

Inauguro agora uma série de posts sobre o conteúdo que irei tratar nas palestras do Community Launch. Primeiramente, preciso ter um ambiente configurado. Talvez você já tenha tido a experiência de instalar o Team Foundation Server 2008, e tenha visto a quantidade enorme de passos para ter o ambiente rodando.

Já no Team Foundation Server 2010. Em no máximo 20min você tem o TFS pronto para ser usado e sem dor de cabeça alguma.

Passo 0 – Aceitar os termos de uso e Passo 1 – Definir o local da instalação

0 1

Passo 2 – Esperar a cópia dos arquivos e Passo 3 – Abrir a caixa de configurações

2 3

 Passo 4 – Selecionar um Wizard de de configuração, no meu caso eu escolhi Basic pois tenho todos os serviços locais e estamos falando de um TFS a ser usado num curto período de tempo.

4

Passo 5 – Apenas revisar os prerequisitos e Passo 6 – Definir o banco de dados

5 6

 Passo 7 – Selecionar a instância do Banco de Dados e Passo 8 – Revisar tudo

7 8

 Passo 9 – Verificação de pre-requisitos e Passo 10 – Ver que está tudo OK

1011

Se você teve interesse em começar a se divertir com o TFS 2010, eu recomendo que você baixe o ISO do RC diretamente do site da Microsoft. Certamente você se supreendeu com a diferença no processo de instalação entre duas versões com 2 anos de diferença mas como diria Ramon Duraes: “Não tem que ser difícil”.

PS. Você contou direito, são 11 passos. Mas quem se importa?

Copa de Talentos: DotNetRaptors BH e Raptors SJC podem te ajudar

Postado em Saturday, March 20, 2010 12:59 PM | Feedback (0)
Categorizado em [ Eventos ]

A Copa de Talentos Microsoft começou hoje, é uma competição onde a Microsoft irá levar até você muito conhecimento sobre os novos produtos através de eventos por todo o Brasil. Os eventos estão sendo promovidos por grupos de desenvolvedores locais e também pela Microsoft em pelo menos 16 cidades. O DotNetRaptors também está na competição más é justamente para te ajudar a vencer! Temos dois times na competição um em Belo Horizonte e outro em São José dos Campos, esses times contam com um técnico que está ali apenas para te ajudar a ir bem, ou seja, se você entrar no nosso time nós jogaremos do seu lado para fazer você vencer! Cadastre-se já no site da competição e escolha entre os times: DotNetRaptorsBH ou Raptors André Raptors SJC.

Community Launch 2010 – Belo Horizonte

Postado em Wednesday, March 17, 2010 2:28 PM | Feedback (2)
Categorizado em [ Eventos ]

+

O Community Launch é um conjunto de eventos organizados pela comundade de profissionais e entusiastas ligados a MSDN e TechNet. E Belo Horizonte não irá ficar fora dessa, teremos o lançamento dos produtos ocorrendo na PUC São Gabriel. Essa é mais uma iniciativa do grupo de usuários DotNetRaptors, como vocês podem ver a turma está voltando pra valer! As palestras serão focadas nos novos recursos do Visual Studio 2010 e das novas tecnologias oferecidas pelo .NET Framework 4. O primeiro evento dá série irá ocorrer no dia 03/05/2010 (3 de Março Maio, segunda-feira!) e contará com palestras sobre Visual Studio, Copa de Talentos Microsoft e ASP.NET MVC. Nesse evento vocês podem contar com a palestra do André Paulovich e no segundo tempo teremos o Ivan Paulovich compartilhando com vocês todas as informações obtidas dos produtos. Mas atenção, as vagas são limitadíssimas. Não perca a chance de participar desse evento. Você pode fazer sua inscrição pelo site da Microsoft no seguinte endereço: Community Launch Belo Horizonte.