【发布时间】:2012-10-31 15:59:58
【问题描述】:
好的...我正在尝试使用 IronPython 将我在 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# 项目中声明该类并将它传递给 PYthon 文件:
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 文件中使用 Object 并调用它的方法。 所以我的Test.py中的代码如下:
def ObjectAsParam(Obj):
print Obj.getString()
print str(Obj.getInt())
Obj.setString("Changed!")
Obj.setInt(1338)
return Obj
但是我的编译器说 python 脚本不知道方法 getString()、getInt() 等。
那么有没有办法管理它?
谢谢
【问题讨论】:
-
也许你需要在某个地方做一些演员表?
-
@Davio 我该怎么做?在哪里? (对不起,我在编程方面没有那么先进)
-
我不知道如何在 Python 中做到这一点,但它的要点是 Python 需要知道传递的对象是什么类型才能调用其上的方法。有没有办法动态调用这些方法? C#有反射,不知道Python有没有类似的东西。
-
@Davio 我发现我的 Python 脚本知道对象的类型......我试图通过反射从中获取属性......但它仍然不知道方法我的 ParamObj 类(对不起,如果我的英语不好)
-
@VanDeath - 你能分享代码吗...因为我也面临同样的问题..我还需要将 C# 对象传递给 IronPython。
标签: c# python object parameter-passing ironpython