Я пытаюсь вызвать скрипт IronPython (2.7.1) из С# (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);
Теперь, чтобы получить streamId, если я это сделаю, это не сработает
int streamId = rule.Execute<int>(scope);
Исключение:
IronPython.Runtime.Exceptions.TypeErrorException не было обработано кодом пользователя Message=expected int, got NoneType
Но это сработает
rule.Execute(scope);
int streamId = scope.getWorkstream(activity);
Мой вопрос в том, как правильно использовать вызов метода Execute класса CompiledCode?
"it doesn't work"
— объясните, что происходит? - person sehe   schedule 29.11.2011