Установка и получение переменных в .Net-скрипте IronPython
Я пытаюсь создать прототип механизма правил валидации, используя IronPython, размещенный в консольном приложении .Net. Я разобрал сценарий до того, что я считаю основами
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();
Однако он не может обнаружить глобальные переменные, которые, я думаю, я установил. Не удается, когда скрипт выполняется с
global name 'property_value' is not defined
но я могу проверить глобальные переменные в области видимости, и они есть - этот оператор возвращает true, когда я запускаю в отладчике
sourceScope.Engine.Runtime.Globals.ContainsVariable("property_value")
Я новичок в IronPython, поэтому извиняюсь, если это простой / очевидный вопрос.
Общая мотивация к этому является созданиеэтот вид правил двигателя но с более поздней (самой последней) версией IronPython, где некоторые методы и подписи были изменены.