Created by Thiago Russo
over 7 years ago
|
||
Question | Answer |
usando CodeDOM p/ gerar código. Pra que serve? Quais cenários típicos? | C# tb tem suporte p/ geração de código em tempo de execução. Uma maneira de fazer isso é através do CodeDOM. É possível utilizar o CodeDOM p/ criar um objeto gráfico q pode ser convertido em um arquivo de fonte ou um assembly binário q pode ser executado. Cenários de uso típicos para usar o CodeDOM envolvem a geração de código para ASP.NET, Web Services, assistentes (wizard) de código, ou designers. Toda vez q vc criar o mesmo código repetidamente com algumas ligeiras modificações, vc pode olhar para o CodeDOM para automatizar o processo. A coisa agradável sobre o CodeDOM é q vc pode representar a estrutura lógica de um pedaço de código independente da sintaxe da linguagem específica q vc usa. |
estrutura de uma app "Hello World!" com CodeDOM |
Image:
Code Dom (image/png)
|
gerando código .cs para a aplicação "Hello World" | |
Expressões lambda |
Image:
Lambda (image/png)
|
Árvores de expressão o que são? | Ao usar lambdas, vc vai se deparar com árvores de expressão, q são representações de código em uma estrutura de dados de árvore. Assim como o CodeDom pode representar código de um modo de árvore, Árvores de expressão pode fazer o mesmo; elas podem tb ser utilizadas para gerar o código. Uma árvore de expressão descreve código em vez de ser o próprio código. Árvores de expressão são muito utilizadas em LINQ. Ao usar o LINQ to Entities para consultar um BD, a consulta n é executada (como em LINQ to Objects). Em vez disso, uma árvore de expressão descreve a consulta. Mais tarde, esta árvore de expressão é traduzida em uma instrução SQL que pode ser enviado para o BD. O namespace System.Linq.Expressions contém todos os tipos de q vc precisa para criar uma expressão. Vc tem expressões para chamar um método e criar um novo obj ou até mesmo operações básicas, como adição ou subtração. |
Árvores de expressão Exemplo para gerar o "Hello World" |
Want to create your own Flashcards for free with GoConqr? Learn more.