#c# #ironpython
#c# #ironpython
Вопрос:
Я просто изучаю возможность использования IronPython с C # и, похоже, не могу найти никакой хорошей документации для того, что мне нужно. По сути, я пытаюсь вызвать методы из файла .py в программу на C #.
У меня есть следующее, которое открывает модуль:
var ipy = Python.CreateRuntime();
var test = ipy.UseFile("C:\Users\ktrg317\Desktop\Test.py");
Но отсюда я не уверен, как получить доступ к методу внутри. В примере, который я видел, используется ключевое слово dynamic, однако в работе я работаю только на C # 3.0.
Спасибо.
Ответ №1:
Смотрите встраивание на сайте Voidspace.
Вот пример, Калькулятор IronPython и вычислитель работают над простым вычислителем выражений python, вызываемым из C#
программы.
public string calculate(string input)
{
try
{
ScriptSource source =
engine.CreateScriptSourceFromString(input,
SourceCodeKind.Expression);
object result = source.Execute(scope);
return result.ToString();
}
catch (Exception ex)
{
return "Error";
}
}
Ответ №2:
Вы можете попробовать использовать следующий код,
ScriptSource script;
script = eng.CreateScriptSourceFromFile(path);
CompiledCode code = script.Compile();
ScriptScope scope = engine.CreateScope();
code.Execute(scope);
Это из этой статьи.
Или, если вы предпочитаете вызывать метод, вы можете использовать что-то вроде этого,
using (IronPython.Hosting.PythonEngine engine = new IronPython.Hosting.PythonEngine())
{
engine.Execute(@"
def foo(a, b):
return a b*2");
// (1) Retrieve the function
IronPython.Runtime.Calls.ICallable foo = (IronPython.Runtime.Calls.ICallable)engine.Evaluate("foo");
// (2) Apply function
object result = foo.Call(3, 25);
}
Этот пример взят отсюда.