感謝來自previous question的建議,我正忙於嘗試IronPython,IronRuby和Boo爲我的C#應用程序創建DSL。由於更大的用戶和知識庫,第一步是IronPython。如果我能在這裏得到一些好的工作,我可以停下來。使用IronPython簡化爲C#應用程序編寫的DSL
這裏是我的問題:
我希望我的IronPython的腳本訪問的功能在一個名爲庫類。現在我可以組裝添加到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);
如果我想運行庫:: PrintHello,這僅僅是一個Hello World風格聲明,我的Python腳本包含:
Lib.PrintHello()
或者(如果它不是靜態的):
library = new Lib()
library.PrintHello()
我怎樣才能改變我的環境,這樣我就可以有基本的statments像THI的Python腳本s:
PrintHello
TurnOnPower
VerifyFrequency
TurnOffPower
etc...
我希望這些腳本對非編程人員來說很簡單。我不希望他們必須知道什麼是課堂或課程是如何運作的。 IronPython實際上就在那裏,所以像一些基本的操作,如果和一個基本的函數定義不需要我爲我的DSL編寫編譯器。
它在IronRuby的,我不得不寫 腳本庫:: Lib.PrintHello看起來更加醜陋() 是任何人都熟悉或者IronRuby的或IronPython的這種方式?在運行測試腳本之前,我需要一個python安裝腳本來映射所有方法/變量嗎?我曾希望在C#中做到這一點。 – cgyDeveloper 2009-08-28 21:20:22