¿Cómo puedo escribir código C# para compilar y ejecutar código C# generado dinámicamente? ¿Hay ejemplos alrededor?Compilación de código de forma dinámica con C#
Lo que busco es construir dinámicamente una clase C (o clases) y ejecutarlas en tiempo de ejecución. Quiero que la clase generada interactúe con otras clases de C# que no son dinámicas.
He visto ejemplos que generan archivos exe o dll. No estoy buscando eso, solo quiero que compile un código C# en la memoria y luego lo ejecute. Por ejemplo,
Así que aquí es una clase que no es dinámica, que se definirá en mi C# ensamblaje y sólo va a cambiar en tiempo de compilación,
public class NotDynamicClass
{
private readonly List<string> values = new List<string>();
public void AddValue(string value)
{
values.Add(value);
}
public void ProcessValues()
{
// do some other stuff with values
}
}
Aquí es mi clase que es dinámico. Mi código C# generará esta clase y ejecutarlo,
public class DynamicClass
{
public static void Main()
{
NotDynamicClass class = new NotDynamicClass();
class.AddValue("One");
class.AddValue("two");
}
}
Así, el resultado es que al final mi código no dinámico llamaría ProcessValues y sería hacer algunas otras cosas. El objetivo del código dinámico es permitirnos a nosotros o al cliente agregar lógica personalizada al software.
Gracias.
¿Es factible compilar ensamblajes de "complementos" y simplemente cargar esos complementos en tiempo de ejecución en lugar de compilar dinámicamente cosas? –
Correcto, sí, lo he hecho antes para otro proyecto. Eso es posible, pero no es lo que realmente buscamos para este proyecto. Lo consideraré, gracias. – peter