Sto cercando di utilizzare IronPython come intermediario tra una GUI C# e alcune librerie C#, in modo che possa essere copiato in fase di compilazione.C#/IronPython Interop con libreria di classi C# condivisa
Ho una libreria di classi DLL che viene utilizzato sia dalla GUI e il pitone ed è qualcosa sulla falsariga di questo:
namespace MyLib
{
public class MyClass
{
public string Name { get; set; }
public MyClass(string name)
{
this.Name = name;
}
}
}
Il codice di IronPython è la seguente:
import clr
clr.AddReferenceToFile(r"MyLib.dll")
from MyLib import MyClass
ReturnObject = MyClass("Test")
poi, in C# che definirei come segue:
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 ")
Quando chiamo questo ultimo pezzo di codice, source.Ex ecute (campo di applicazione) gestisce ritorna con successo, ma quando provo la chiamata GetVariable, è gettare la seguente eccezione
Microsoft.Scripting.ArgumentTypeException: expected MyClass , got MyClass
Così, si può vedere che i nomi di classe sono esattamente gli stessi, ma per qualche motivo si pensa che siano diverso.
La DLL si trova in una directory diversa da quella del file .py (non mi sono preoccupato di scrivere tutte le impostazioni del percorso), potrebbe essere che ci sia un problema con l'interprete per IronPython vedere questi oggetti come differenza perché è in qualche modo vederli come in un contesto o scopo diverso?