将数组从IronPython传递到C#库

时间:2011-09-15 20:48:57

标签: c# ironpython

我试图了解如何将一个浮点的多维数组从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)

我得到以下异常:“期望的数组[浮点数],得到列表”然后我尝试将数组转换为元组但它只适用于1D数组。

有关如何做的任何建议?

1 个答案:

答案 0 :(得分:5)

您需要创建一个二维.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);