Crie scripts Python e chame métodos a partir de C #

Existe alguma maneira de fazer esse cenário funcionar?

Existe um script Python. Ele está embutido em uma DLL executando este script com IronPython:

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

O objetivo é chamar os métodos dessa DLL a partir do código C #.Refletor .NET mostra que há uma classe na DLL -DLRCashedCode e os métodos nos quais estamos interessados são métodos estáticos privados dessa classe.

Por exemplo, há uma função no script:

def scriptMethod(self, text):
...

Sua representação na DLL é:

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

Closure ePythonFunction são classes IronPython (do Microsoft.Scripting.dll e IronPython.dll).

Por enquanto, tudo bem. É possível que esse método seja chamado pelo código C #? A ideia de usar reflexão como

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);

parece mais difícil por causa da definição dos parâmetros do método. Se eles foram (de alguma forma) inicializados corretamente, poderíamos esperar que o método funcionasse sem problemas?

Existe uma maneira melhor de chamar esses métodos de c #? Por vários motivos diferentes, preferimos criar o script como um assembly .NET e não chamar o próprio script.

questionAnswers(2)

yourAnswerToTheQuestion