Estoy tratando de utilizar IronPython como intermediario entre una GUI de C# y algunas bibliotecas de C#, de modo que pueda escribirse el tiempo de compilación posterior.C#/IronPython Interop con biblioteca de clases de C# compartida
Tengo una biblioteca DLL de clase que se utiliza por tanto la interfaz gráfica de usuario y la pitón y es algo a lo largo de las líneas de esto:
namespace MyLib
{
public class MyClass
{
public string Name { get; set; }
public MyClass(string name)
{
this.Name = name;
}
}
}
El código IronPython es el siguiente:
import clr
clr.AddReferenceToFile(r"MyLib.dll")
from MyLib import MyClass
ReturnObject = MyClass("Test")
Luego, en C# yo diría que es de la siguiente manera:
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = null;
scope = engine.CreateScope();
ScriptSource source = engine.CreateScriptSourceFromFile("Script.py");
source.Execute(scope);
MyClass mc = scope.GetVariable<MyClass>("ReturnObject ")
Cuando llamo a este último bit de código, source.Ex ecute (alcance) se ejecuta devuelve correctamente, pero cuando trato de la llamada GetVariable, es la excepción siguiente
Microsoft.Scripting.ArgumentTypeException: expected MyClass , got MyClass
Por lo tanto, se puede ver que los nombres de las clases son exactamente lo mismo, pero por alguna razón se cree que son diferente.
La DLL está en un directorio diferente que el archivo .py (simplemente no me molesté en escribir todas las cosas de configuración de la ruta), podría ser que haya un problema con el intérprete para que IronPython vea estos objetos como diferencia porque de alguna manera los ve como en un contexto o alcance diferente?