Setzen und Abrufen von Variablen in einem von .Net gehosteten IronPython-Skript
Ich versuche, mit IronPython, das in einer .NET-Konsolenanwendung gehostet wird, eine Validierungsregel-Engine zu erstellen. Ich habe das Skript auf das reduziert, was meiner Meinung nach die Grundlagen sind.
var engine = Python.CreateEngine();
engine.Execute("from System import *");
engine.Runtime.Globals.SetVariable("property_value", "TB Test");
engine.Runtime.Globals.SetVariable("result", true);
var sourceScope = engine.CreateScriptSourceFromString("result = property_value != None and len(property_value) >= 3");
sourceScope.Execute();
bool result = engine.Runtime.Globals.GetVariable("result");
engine.Runtime.Shutdown();
Es kann jedoch nicht die globalen Variablen erkennen, die ich eingerichtet zu haben glaube. Es schlägt fehl, wenn das Skript mit @ ausgeführt wi
global name 'property_value' is not defined
Aber ich kann die globalen Variablen im Gültigkeitsbereich überprüfen und sie sind da - diese Anweisung gibt true zurück, wenn ich im Debugger ausgeführt werde.
sourceScope.Engine.Runtime.Globals.ContainsVariable("property_value")
Ich bin ein absoluter Neuling bei IronPython und entschuldige mich, wenn dies eine einfache / offensichtliche Frage ist.
Die allgemeine Motivation dazu ist das Erstellen vondiese Art von Regel-Engine aber mit einer neueren (neuesten) Version von IronPython, in der sich einige der Methoden und Signaturen geändert haben.