Estoy usando C# con .NET 3.5. ¿Es posible serializar un bloque de código, transmitirlo a otro lugar, deserializarlo y luego ejecutarlo?¿Es posible serializar un bloque de código C#?
Un ejemplo de uso de esto sería:
Action<object> pauxPublish = delegate(object o)
{
if (!(o is string))
{
return;
}
Console.WriteLine(o.ToString());
};
Transmitter.Send(pauxPublish);
con la realización de un programa a distancia:
var action = Transmitter.Recieve();
action("hello world");
Mi objetivo final es ser capaz de ejecutar código arbitrario en un proceso diferente (que tiene sin conocimiento previo del código).
Cuando trabajaba para un cliente que tenía que manejar miles de importaciones de archivos cada día desde un par de cientos de fuentes, creé una herramienta de importación genérica donde los usuarios avanzados podían definir columnas de archivos e ingresar una línea de C# para transformar la entrada valor al tipo/formato apropiado. Una vez que se haya guardado la nueva definición, compilaremos dinámicamente la clase de importación para esta fuente y luego la ejecutaremos cuando lleguen nuevos archivos. Con 50 o más casos comunes auto-completables, funcionó sorprendentemente bien y ahorró una gran cantidad de solicitudes de cambio, así como también mejoró la velocidad de importación en un orden de magnitud. – Basic