Skip to main content

Compilar código em tempo de execução


  Para compilar código em tempo de execução no .NET Framework vamos precisar de utilizar classes dos namespaces System.CodeDom.Compiler, Microsoft.CSharp e o Microsoft.VisualBasic, em que o primeiro providencia a capacidade de compilar código dentro da aplicação e os outros fornecem as classes que estendem a classe CodeDomProvider para fornecer a capacidade de interpretar o código na linguagem especifica.

  para isso vamos criar uma classe Helper para colocar um método de compilação de código C#, depois será inserida a capacidade de compilação de código VB.NET, vamos então incluir os namespaces necessários e a classe de Helper.

using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Reflection;

using Microsoft.CSharp;
using Microsoft.VisualBasic;

namespace CodingEvolution.Libs.Helpers
{
    public class Compiling
    {
        private Compiling() { }
    }
}

  Tendo toda a estrutura feita podemos então introduzir um método genérico para qualquer tipo de código.

Codificação dinâmica


  Codificação dinâmica é uma expressão para designar uma funcionalidade que está neste momento em desenvolvimento, em que esta consiste em dar a capacidade a um programa de se auto-estender através de compilação de código fonte em código executável na própria máquina de execução, conseguindo assim se auto-adaptar ao ambiente de execução, para além de conseguir resolver problemas na área da programação que não são facilmente solucionáveis por programação normal e exigem bastante trabalho entedioso.

  Alguns desses problemas são bastante conhecidos como por exemplo o problema da impedância entre as bases de dados em que estas têm uma estrutura tabular e os objectos de uma linguagem de programação de 4ª geração, por exemplo a C#, que têm uma estrutura hierárquica com vários níveis, para compensar este problema os programadores fazem bastante trabalho tedioso ao adaptar uma estrutura à outra, podem usar também bibliotecas de mapeamento que exigem bastante trabalho para as configurar e manter, tudo isto seria evitado se houvesse uma biblioteca que pegasse no objecto a persistir e criasse em tempo de execução um objecto que estendesse este mas desta vez com todos os métodos necessários para aceder à base de dados em questão podendo se adaptar a qualquer base de dados tal como a qualquer objecto, mais detalhes serão dados no decorrer deste estudo.

  Criar aplicações que se conseguem adaptar em tempo de execução é uma estratégia usada para lidar com cenários em que não se consegue determinar em detalhe na altura do desenvolvimento dando abertura à introdução de diversas linhas de código futuramente para compensar a falta destes cenários no planeamento da aplicação, no entanto criando código dinamicamente estes problemas são ultrapassados, compilando assim código executável enquanto a aplicação está em execução é uma óptima maneira de compensar diferentes configurações de máquina, necessidades dos utilizadores, etc.
Conteúdo sindicado