【问题标题】:Pass a C# Class Object to a Python file将 C# 类对象传递给 Python 文件
【发布时间】: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


【解决方案1】:

确保 ParamObj 是一个公共类。

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多