Para facilitar o desenvolvimento na versão 3.0/3.5 do C# podemos utilizar um tipo anônimo, mas a final o que seria isso ?! Simples, o tipo anônimo é um encapsulamento de propriedades em um único objeto sem ter que definir explicitamente o tipo, o nome é gerado pelo compilador e não esta disponível a nível de código fonte (intellisense), em outras palavras imagine uma classe que é construída automaticamente pelo compiler (lembra os tipos dinâmicos do Framework 4.0, porém não é a mesma coisa.)
Para declarar um objeto do tipo dinâmico basta apenas utilizar a palavra chave new acompanhada das propriedades que você quer inserir no objeto veja um exemplo abaixo.
var person = new { Name = "Nelson", Age = 23 }; |
Para fixar melhor, vamos criar um exemplo.
1-) Crie um projeto do Windows Form com o nome de AnonymousTypes.
2-) Adicione no seu projeto uma nova classe chamada pessoa, e dentro desta classe defina 3 propriedades, sendo elas: Nome, SobreNome e posteriormente crie um método para retornar uma lista da classe pessoa.
namespace AnonymousTypes { public class Pessoa { public string Nome { get; set; } public string SobreNome { get; set; } public IEnumerable<Pessoa> RetornaListaPessoas() { List<Pessoa> listaPessoas = new List<Pessoa>() { new Pessoa(){Nome="Nelson", SobreNome="Borges"}, new Pessoa(){Nome="João", SobreNome="Augusto"}, new Pessoa(){Nome="Vitor", SobreNome="Hugo"}, new Pessoa(){Nome="Almir", SobreNome="Sater"} }; return listaPessoas; } } } |
3-) Dentro do Form1, crie um evento do Load do formulário e insira o seguinte código:
private void Form1_Load(object sender, EventArgs e) { foreach(Pessoa p in new Pessoa().RetornaListaPessoas()) { var pessoaAnonymousTypes = new { NomeCompleto = p.Nome + " " + p.SobreNome }; MessageBox.Show(pessoaAnonymousTypes.NomeCompleto); } } |
Repare que neste código estamos criando um tipo anônimo (pessoaAnonymousType) e este objeto possui uma propriedade chamada NomeCompleto que é a concatenação do Nome e SobreNome da classe pessoa.
O interessante desta feature é a possibilidade de usar em conjunto com o Linq, para saber mais acesse: http://msdn.microsoft.com/en-us/library/bb397696.aspx, no meu blog também contém esta e outras dicas que estou escrevendo sobre o C#, para saber mais clique aqui
Abs,