MSDN Magazine - Janeiro 2008

12/26/2007 16:35:00 By Felipe Pessoto

Está disponível a edição de Janeiro da MSDN Magazine. Assuntos de capa:

• IIS 7.0: Aprimore seu aplicativo com o pipeline integrado do ASP.NET
Mike Volodarsky

• World Ready: Uma volta ao mundo com aplicativos ASP.NET AJAX
Guy Smith-Ferrier

• WCF Syndication: Programação HTTP com WCF e o .NET Framework 3.5
Justin Smith

• SQL Server: Encontrar dados ocultos para otimizar o desempenho do aplicativo
Ian Stirk

• Look It Up: Gerenciando entidades de segurança de diretório no .NET Framework 3.5
Joe Kaplan e Ethan Wilansky

Download - Download dos Códigos

Novos recursos no C#3.0

12/14/2007 09:22:00 By Felipe Pessoto

Vou falar sobre alguns novos recursos que vieram na nova versão do C#.

Começando pelas Propriedades Automáticas.
Antigamente quando a gente criava as propriedades das nossas classes, faziamos um código como esse:

7 public class Carro

8 {

9 private string _modelo;

10 private string _marca;

11 private int _ano;

12 private string _cor;

13

14 public string Modelo

15 {

16 get { return _modelo; }

17 set { _modelo = value; }

18 }

19

20 public string Marca

21 {

22 get { return _marca; }

23 set { _marca = value; }

24 }

25

26 public int Ano

27 {

28 get { return _ano; }

29 set { _ano = value; }

30 }

31

32 public string Cor

33 {

34 get { return _cor; }

35 set { _cor = value; }

36 }

37 }

Como você pode notar, as propriedades não tem nenhum tratamento lógico, servindo como se fosse um acesso direto aos campos. Então porque não expor os campos diretamente? Basicamente porque no futuro você pode querer implementar algum tratamento, assim se você tiver usado propriedades, as classes que usam suas propriedades não precisarão ser recompiladas.

Sendo muito comum o uso de propriedades como as que vimos acima, no C#3.0 foi implementado as Propriedades Automáticas, que substituem esse código "padrão". O código anterior ficaria assim:

7 public class Carro

8 {

9 public string Modelo { get; set; }

10 public string Marca { get; set; }

11 public int Ano { get; set; }

12 public string Cor { get; set; }

13 }

Quando o compilador encontrar um get/set vazio como estes, ele automáticamente criará os campos privados para a classe e implementará as propriedades públicas get/set.

Diferentemente de criar campos públicos, poderemos no futuro criar as implementações lógicas, sem ter que mudar nenhum componente externo que referencia nossa classe.

Inicializadores de Objetos

Usamos muitas propriedades quando estamos programando e é muito comum códigos como esse:


13 Carro car = new Carro();

14 car.Modelo = "Punto";

15 car.Marca = "Fiat";

16 car.Ano = 2007;

17 car.Cor = "Azul";

Agora podemos escrever isso de outra forma, mais simples e concisa, usando os "object Initializers". Seu código pode ser escrito assim:


Carro car = new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" };


E o compilador irá se encarregar de instanciar a classe e setar as propriedades.

É interessante que podemos inicializar objetos aninhados, como mostrado:


Carro car = new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul", Fabric = new Fabricante { Nome = "Industria Metal", CNPJ = "12312" } };

Inicializadores de Coleção

Os inicializadores de objeto também facilitam a maneira como adicionamos itens a uma coleção. Se quisermos adicionar objetos Carro a uma List devemos escrever o seguinte código:



14 List<Carro> Carros = new List<Carro>();

15

16 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" });

17 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Vermelho" });

18 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Preto" });


Economizando muitas linhas de código. E podemos diminuir ainda mais, usando Inicializadores de coleção, não precisamos escrever vários métodos Add:


14 List<Carro> Carros = new List<Carro>{

15 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" },

16 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Vermelho" },

17 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Preto" }

18 };

Silverlight 1.1 Tools Alpha para Visual Studio 2008 disponível

11/27/2007 08:05:00 By Felipe Pessoto

Saiu a versão atualizada do Silverlight 1.1 Tools Alpha que funciona com a versão final do VS 2008. Você pode fazer o download aqui.

Esta atualização tem as mesmas funcionalidades da versão anterior para o VS2008 Beta 2, só que agora, funciona na versão final.

O conjunto de funcionalidade incluem suporte básico ao sistema de projeto do Silverlight 1.1, edição de markup XAML e intellisense, suporte à debugging, compatibilidade com projetos Expression Blend, intellisense para VB e C# no code-behind.

O próximo release público do Silverlight irá incluir toneladas de novas funcionalidades , bem como melhorias significativas no suporte ao VS 2008.

Sobre o VS 2008 e o Source do Framework

11/20/2007 14:55:00 By Felipe Pessoto

Hoje as 00:00 consegui baixar o VSTS Trial(são 4GB!), e uma das primeiras coisas que testei foi a visualização do código fonte da Biblioteca de Classes do Framework e fiquei decepcionado.
Não sei se fiz algo errado, até porque não achei em nenhum lugar como faço pra visualizar o código, então coloquei um breakpoint no código, cliquei no método com o botão direito e cliquei em Go To Definition.

Um novo arquivo é aberto dentro do VS com com todos os métodos da classe, mas ao ver o conteúdo deles, me deparo com apenas algumas linhas de comentários...
Sim apenas os comentários estão disponíveis! Não sei se é temporário ou se é porque estou usando uma versão Trial.

Se alguem tiver mais informações sobre essa funcionalidade, me manda um email.