2012-11-12 86 views
3

好吧...我试图将一个我在C#中声明的对象传递给一个带有IronPython的Python文件。将一个C#类对象传递给一个Python文件

所以这是我在想什么关:

C#类:

public class ParamObj 
{ 
    private string Obj_String; 
    private int Obj_Int; 

    public ParamObj(string lObjS, string lObjI) 
    { 
     Obj_String = lObjS; 
     Obj_Int = lObjI; 
    } 

    public string getString() 
    { 
     return Obj_String; 
    } 

    public int getInt() 
    { 
     return Obj_Int; 
    } 

    public setString(string lStr) 
    { 
     Obj_String = lStr; 
    } 

    public setInt(int lInt) 
    { 
     Obj_Int = lInt; 
    } 
} 

所以,我有我的课。现在我宣布类在我的C#项目,我把它传递给蟒蛇文件:

ParamObj Test_Object = new ParamObj("Test Object from C#", 1337); 
var ipy = Python.CreateRuntime(); 
dynamic Test = ipy.UseFile("Test.py"); 

Test_Object = Test.ObjectAsParam(Test_Object); 

Console.WriteLine(Test_Object.getString(), Convert.ToString(Test_Object.getInt())); 

现在我想在我的Pythoin文件中使用对象,并调用它的方法。 所以在我Test.py的代码如下:

def ObjectAsParam(Obj): 

    print Obj.getString() 
    print str(Obj.getInt()) 

    Obj.setString("Changed!") 
    Obj.setInt(1338) 

    return Obj 

但我的编译器说,Python脚本不知道方法 的getString(),getInt()等

所以有没有办法来管理呢?

感谢

+0

也许你需要在某处做一些演员? – Davio

+0

@Davio我该怎么做?和哪里? (在编程中我没有那么高级) – VanDeath

+0

我不知道如何在Python中完成它,但其要点是Python需要知道传入的对象是什么类型以便能够调用方法在上面。有没有办法动态调用这些方法? C#有反射,我不知道Python中是否有类似的东西。 – Davio

回答

3

确保ParamObj是一个公共类。

+0

哇谢谢你! = D傻我xD – VanDeath

相关问题