He escrito un paquete, SharpByte.Dynamic, para simplificar la tarea o f compilando y ejecutando código dinámicamente. El código se puede invocar en cualquier objeto de contexto utilizando métodos de extensión como se detalla más adelante here.
Por ejemplo,
someObject.Evaluate<int>("6/{{{0}}}", 3))
retornos 3;
someObject.Evaluate("this.ToString()"))
devuelve la representación de cadena del objeto contextual;
someObject.Execute(@
"Console.WriteLine(""Hello, world!"");
Console.WriteLine(""This demonstrates running a simple script"");
");
ejecuta esas declaraciones como una secuencia de comandos, etc.
ejecutables se pueden conseguir fácilmente utilizando un método de fábrica, como se ve en el ejemplo here --todos lo que necesita es el código fuente y la lista de todas las previsiones parámetros con nombre (tokens están incrustadas usando la notación de triple soporte, como {{{0}}}, para evitar colisiones con string.Format(), así como sintaxis Manillares-como):
IExecutable executable = ExecutableFactory.Default.GetExecutable(executableType, sourceCode, parameterNames, addedNamespaces);
Cada objeto ejecutable (script o expresión) es thread-safe, se puede almacenar d y reutilizado, admite el registro desde un script, almacena información de tiempo y última excepción si se encuentra, etc. También hay un método Copy() compilado en cada uno para permitir la creación de copias baratas, es decir, utilizando un objeto ejecutable compilado a partir de un script o expresión como una plantilla para crear otros.
La sobrecarga de la ejecución de una secuencia de comandos o una secuencia de comandos ya compilados es relativamente baja, muy por debajo de un microsegundo en hardware modesto, y las secuencias de comandos y expresiones ya compiladas se almacenan en caché para su reutilización.
C# llame al eval de ironpython. Lo intenté en C# 4.0. ninguna experiencia con C# 2.0 –
@Peter Long, ¿dónde puedo encontrar documentación sobre la evaluación de IronPython? – smartcaveman
Eche un vistazo a [shell interactivo CSharp de Mono] (http://www.mono-project.com/CsharpRepl). Tiene [funciones tipo eval] (http://www.go-mono.com/docs/index.aspx?link=N:Mono.CSharp). –