Ausführen einer bestimmten Python-Funktion in C# mit IronPython
Bisher habe ich eine einfache Klasse, die wraps ein python-engine (IronPython) für meinen Gebrauch. Obwohl der code sieht so groß, es ist wirklich einfach, also ich kopiere es hier zu mehr klar mit meinem Problem.
Hier der code:
public class PythonInstance
{
ScriptEngine engine;
ScriptScope scope;
ScriptSource source;
public PythonInstance()
{
engine = Python.CreateEngine();
scope = engine.CreateScope();
}
public void LoadCode(string code)
{
source = engine.CreateScriptSourceFromString(code, Microsoft.Scripting.SourceCodeKind.Statements);
source.Compile();
}
public void SetVariable(string key, dynamic variable)
{
scope.SetVariable(key, variable);
}
public void RunCode()
{
source.Execute(scope);
}
public void CallFunction(string function)
{
//?????? no idea what to call here
}
}
So, es funktioniert Super, aber nur mir erlaubt, führen Sie alle python-Skript auf einmal... aber was ich möchte zu tun ist, um der Lage sein, bestimmte Funktionen innerhalb einer pythos Skript.
So, meine Frage: Wie rufe ich eine bestimmte Funktion in der geladenen Skript?
Ich versuche zu finden, einige Informationen oder tutorials, aber konnte leider nichts finden.
- Haben Sie sich stackoverflow.com/questions/13231913/... und stackoverflow.com/questions/7053172/...?
- erstes ja, zweites Nein. Danke für den link, ich lese es jetzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dank Anregung in den Kommentaren, ich war in der Lage, herauszufinden, wie es zu benutzen. Hier ist, was ich jetzt habe:
Um es zu testen:
Können Sie ScriptScope.GetVariable, um die eigentliche Funktion, und dann Sie können es nennen, wie ein c# - Funktion.
Verwenden Sie es wie diese:
C# - code:
Python-code:
Dauerte eine Weile, um schließlich herauszufinden, und es ist ganz einfach.. schade, es gibt keine guten IronPython-Dokumentation. Hoffe, das hilft 🙂