Упрощение написания DSL для приложения на C # с IronPython

Благодаря предложениям отпредыдущий вопросЯЯ стараюсь попробовать IronPython, IronRuby и Boo, чтобы создать DSL для моего приложения на C #. Первый шаг - IronPython, благодаря большему количеству пользователей и базы знаний. Если мне удастся заставить что-то здесь хорошо работать, я могу просто остановиться.

Вот моя проблема:

Я хочу, чтобы мой сценарий IronPython имел доступ к функциям в классе с именем Lib. Прямо сейчас я могу добавить сборку во время выполнения IronPython и импортировать класс, выполнив оператор в области, которую я создал:

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

Если я хочу запустить Lib :: PrintHello, который является просто оператором hello world style, мой скрипт на Python содержит:

Lib.PrintHello()

или (если этоне статично):

library = new Lib()
library.PrintHello()

Как я могу изменить свое окружение, чтобы в скрипте Python могли быть только основные характеристики:

PrintHello
TurnOnPower
VerifyFrequency
TurnOffPower
etc...

Я хочу, чтобы эти сценарии были простыми для непрограммиста. Я неЯ не хочу, чтобы они знали, что такое класс или как он работает. IronPython действительно существует, поэтому некоторые базовые операции, такие как for, do, if и определение базовой функции, неМне не нужно писать компилятор для моего DSL.

Ответы на вопрос(1)

Ваш ответ на вопрос