Создавать скрипты Python и вызывать методы из C #

Есть ли способ заставить этот сценарий работать?

Есть скрипт на Python. Он встроен в DLL, запустив этот скрипт с IronPython:

import clr
clr.CompileModules("CompiledScript.dll", "script.py")

Цель состоит в том, чтобы вызвать методы этой DLL из кода C #..NET Reflector показывает, что есть один класс в DLL -DLRCashedCode и методы, которые нас интересуют, являются частными статическими методами этого класса.

Например, в скрипте есть функция:

def scriptMethod(self, text):
...

Его представление в DLL:

private static object scriptMethod(Closure closure1, PythonFunction $function, object self, object text)
{
...
}

Closure а такжеPythonFunction являются классами IronPython (от Microsoft.Scripting.dll и IronPython.dll).

Все идет нормально. Возможно ли, чтобы этот метод вызывался кодом C #? Идея использования отражения как

Type t = typeof(DLRCachedCode);

string methodName = "scriptMethod";
MethodInfo method = t.GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Static);

object[] parameters = new object[] { "param1", "param2" };  // the "params problem"
method.Invoke(null, parameters);

кажется сложнее из-за установки параметров метода. Если они (каким-либо образом) инициализированы правильно, можем ли мы ожидать, что метод будет работать гладко?

Есть ли лучший способ вызвать этот метод из C #? По разным причинам мы предпочитаем, чтобы скрипт был построен как сборка .NET, а не вызывал сам скрипт.

Ответы на вопрос(2)

Ваш ответ на вопрос