我有一個需要與C#函數進行某種通信的python腳本。該功能需要三個參數,其中兩個通過out
關鍵字返回。聲明看起來是這樣的:在Ironpython的二維數組上進行參考/輸出
RunComputation(InfoParams locInfo, out double[,] dataTable, out int numPoints){ ... }
因爲Python是一種動態類型語言,它不知道如何應對出關鍵字。我做了一些搜索,發現了一些關於clr.StrongBox和clr.Reference的東西,這些東西在需要傳遞強類型對象的情況下似乎很簡單。
對於爲NumPoints參數,我可以在Python代碼中定義是這樣的:
num_points = clr.Reference[int]
而且似乎是罰款。問題來自dataTable數組。我不知道語法來告訴它,我的強類型對象是一個雙精度數組。它給出的錯誤告訴我它期待着一個StrongBox[Array[float]]
類型的實例。我嘗試從System導入數組,以查看我是否可以添加該C#類型作爲參考,但失敗了。有任何想法嗎?
我不對IronPython編程知道很多,但也許你可以考慮添加一個C#包裝函數,它接受你的單個InfoParams參數並返回一個由double [,] dataTable和int numPo組成的對象ints'。通過這種方式,C#可以處理輸出,IronPython只需獲取一個對象,通過它的兩個公開屬性可以訪問該數據。 –
有道理。當我等待看看是否有人有直接的解決方案時,我會放棄這一做法。 – KChaloux