2012-11-12 106 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

相關問題