问题的描述:
鉴于Python强大的网络功能和丰富的开源组件和C#开发Windows Form程序时优秀的框架,使用Python和C#混合编程可以有效的结合二者的长处,快速开发产品。
然而在这两者之间如何进行消息/数据的传递便成为一个首要的问题。
解决思路:
想在这两者之间方便进行对象转换Json是个首选的技术(关于Json的介绍就不复述了,可以参考文献[1])。既然选定了使用Json作为消息传递的格式,我们可以有两种方案处理这个问题:
一、通过中间文件传递Json字符串
在Python中将需要传递到C#的对象组装成列表,转换为Json字符串,将该字符串写入文件,然后再在C#端将该文件读出来,反序列化为对象列表即可。
话不多说,直接上代码:
Python端代码:
注:这里只贴了核心代码。至于如何将自定义Python转换为Json字符串可以参考文献[2]。
C#端代码:
二、通过返回值传递Json字符串
在Python端将对象列表转换成的Json字符串直接返回,在C#端直接捕获该返回值,然后反序列化为对象列表,代码如下:
Python端
C#端
这种方式省略了对中间文件的读写操作,较少了程序运行的时空开销。
参考文献:
【1】介绍Json http://www.json.org/json-zh.html
【2】使用Json作为Python和C#混合编程时对象转换的中间文件 http://www.cnblogs.com/chaosimple/p/4035693.html
【3】Best way to return a value from a Python script http://stackoverflow.com/questions/18231415/best-way-to-return-a-value-from-a-python-script