我在C#應用程序中嵌入了一個IronPython引擎。我想向解釋器公開一些自定義命令(方法)。我該怎麼做呢?如何將重載方法暴露給嵌入式IronPython解釋器?
目前,我有這樣的事情:
public delegate void MyMethodDel(string printText);
Main(string[] args)
{
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
MyMethodDel del = new MyMethodDel(MyPrintMethod);
scope.SetVariable("myprintcommand", del);
while(true)
{
Console.Write(">>>");
string line = Console.ReadLine();
ScriptSource script = engine.CreateScriptSourceFromString(line, SourceCodeKind.SingleStatement);
CompiledCode code = script.Compile();
script.Execute(scope);
}
}
void MyPrintMethod(string text)
{
Console.WriteLine(text);
}
我可以用這個像這樣:
>>>myprintcommand("Hello World!")
Hello World!
>>>
這工作得很好。我想知道,如果這是做我想達到的正確方式/最佳做法?
我該如何暴露相同方法的重載。例如,如果我想公開像myprintcommand(字符串格式,object [] args)的方法。
通過我目前的做法,關鍵字「myprintcommand」只能映射到一個代表。因此,如果我想將重載的「myprintcommand」公開給解釋器,我將不得不更改命令/方法的名稱。有沒有其他的方式來實現我想要的?