2011-09-15 47 views
2

我想了解如何从IronPython代码将一个浮点数组的多维数组传递给C#库。从IronPython传递数组到C#库

这里是我试图调用C#代码(这是一个函数库类,我导入到我的IronPython的代码):

public void ShowMessage(double[,] values) 

这是我的IronPython的代码:

import clr 
clr.AddReferenceToFile(r"DisplayLib.dll") 
from DisplayLib import Display 

display = Display() 

a = [[1.2, 1.3, 1.4, 1.5], 
    [2.2, 2.3, 2.4, 2.5]] 

display.ShowMessage(a) 

我收到以下异常:“expected Array [float],got list”然后我尝试将数组转换为元组,但它只适用于一维数组。

对此有何建议?

回答

5

您需要创建一个Two-Dimensional .NET数组的实例。你不能使用Python列表来代替数组。一个不幸的限制。

你可以尝试这样的事:

from System import Array 

data = [[1.2, 1.3, 1.4, 1.5], 
     [2.2, 2.3, 2.4, 2.5]] 
# assuming all rows will have the same length 
a = Array.CreateInstance(float, len(data), len(data[0])) 
for i, row in enumerate(data): 
    for j, col in enumerate(row): 
     a[i, j] = col 
display.ShowMessage(a);