KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Is there any way to make this scenario work? There is a Python script. It is built into a DLL by running this script with IronPython: import clr clr.CompileModules("CompiledScript.dll", "script.py") The goal is to call this DLL's methods from C# code. .NET Reflector shows there is one class in the DLL - DLRCashedCode and the methods we are interested in are private static methods of this class. For example, there is a function in the script: def scriptMethod(self, text): ... Its representation in the DLL is: private static object scriptMethod(Closure closure1, PythonFunction $function, object self, object text) { ... } Closure and PythonFunction are IronPython classes (from Microsoft.Scripting.dll and IronPython.dll). So far so good. Is it possible this method to be called by C# code? The idea of using reflection like 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); seems harder because of setting the method's parameters. If they are (any how) initialized correctly, could we expect the method to work smoothly? Is there a better way to call this methods from C#? For various different reasons we prefer to have the script built as a .NET assembly and not to call the script itself.
Tags (comma-separated)
Save Edits
Cancel