Создавать скрипты 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, а не вызывал сам скрипт.