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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage