問題的描述:
鑑於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