Simplificación de DSL escrita para una aplicación C # con IronPython

Gracias a las sugerencias de unPregunta anteriorEstoy ocupado probando IronPython, IronRuby y Boo para crear un DSL para mi aplicación C #. El primer paso es IronPython, debido a la mayor base de usuarios y conocimientos. Si puedo hacer que algo funcione bien aquí, simplemente puedo parar.

Aquí está mi problema:

Quiero que mi script IronPython tenga acceso a las funciones en una clase llamada Lib. Ahora mismo puedo agregar el ensamblaje al tiempo de ejecución de IronPython e importar la clase ejecutando la declaración en el ámbito que creé:

// load 'ScriptLib' assembly
Assembly libraryAssembly = Assembly.LoadFile(libraryPath);
_runtime.LoadAssembly(libraryAssembly);

// import 'Lib' class from 'ScriptLib'
ScriptSource imports = _engine.CreateScriptSourceFromString("from ScriptLib import Lib", SourceCodeKind.Statements);
imports.Execute(_scope);

// run .py script:
ScriptSource script = _engine.CreateScriptSourceFromFile(scriptPath);
script.Execute(_scope);

Si quiero ejecutar Lib :: PrintHello, que es solo una declaración de estilo hola mundo, mi script de Python contiene:

Lib.PrintHello()

o (si no es estático):

library = new Lib()
library.PrintHello()

¿Cómo puedo cambiar mi entorno para que solo pueda tener las declaraciones básicas en el script de Python de esta manera?

PrintHello
TurnOnPower
VerifyFrequency
TurnOffPower
etc...

Quiero que estos scripts sean simples para que los que no son programadores escriban. No quiero que tengan que saber qué es una clase o cómo funciona. IronPython está realmente allí para que algunas operaciones básicas como for, do, if, y una definición de función básica no requieran que escriba un compilador para mi DSL.

Respuestas a la pregunta(1)

Su respuesta a la pregunta