Я пытаюсь вызвать скрипт IronPython (2.7.1) из C # (4.0)
Это связано с Интеграция IronPython в C #: конкретная проблема / вопрос
У меня есть скрипт на python, как показано ниже в файле script.py
import clr
def getStream(activity):
if activity.ActivityType == 'XXX':
if activity.Complexity == 'LOW':
return 1
else:
return 2
else:
return 0
getStream(activity)
Я пытаюсь предварительно скомпилировать скрипт и использовать его позже
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile("script.py");
CompiledCode compiledCode = source.Compile();
dynamic scope = engine.CreateScope();
// .. creating an activity object here
scope.SetVariable("activity", activity);
Теперь, чтобы получить идентификатор потока, если я делаю это, он не работает
int streamId = rule.Execute<int>(scope);
Исключение составляет
IronPython.Runtime.Exceptions.TypeErrorException не был обработан кодом пользователя
Сообщение = ожидается int, получил NoneType
Но это будет работать
rule.Execute(scope);
int streamId = scope.getWorkstream(activity);
У меня вопрос, как правильно использовать вызов метода Execute класса CompiledCode?