Uproszczenie DSL napisanego dla aplikacji C # z IronPython

Dzięki sugestiom od apoprzednie pytanie, Jestem zajęty wypróbowywaniem IronPythona, IronRuby i Boo, aby utworzyć DSL dla mojej aplikacji C #. Krok pierwszy to IronPython, ze względu na większą bazę użytkowników i wiedzy. Jeśli uda mi się tu coś dobrze pracować, mogę po prostu przestać.

Oto mój problem:

Chcę, aby mój skrypt IronPython miał dostęp do funkcji w klasie o nazwie Lib. Teraz mogę dodać zespół do środowiska wykonawczego IronPython i zaimportować klasę, wykonując instrukcję w zakresie, który stworzyłem:

// 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);

Jeśli chcę uruchomić Lib :: PrintHello, który jest tylko instrukcją stylu hello world, mój skrypt Pythona zawiera:

Lib.PrintHello()

lub (jeśli nie jest statyczny):

library = new Lib()
library.PrintHello()

Jak mogę zmienić swoje środowisko tak, że mogę po prostu mieć podstawowe statystyki w skrypcie Pythona, takie jak ten:

PrintHello
TurnOnPower
VerifyFrequency
TurnOffPower
etc...

Chcę, aby te skrypty były proste do napisania przez programistę. Nie chcę, żeby musieli wiedzieć, czym jest klasa lub jak działa. IronPython jest tak naprawdę po to, aby niektóre podstawowe operacje, takie jak, zrobić, czy i podstawowa definicja funkcji, nie wymagają pisania kompilatora dla mojej DSL.

questionAnswers(1)

yourAnswerToTheQuestion