将一个数组从IronPython传递到c#库

本文关键字:IronPython 数组 一个 | 更新日期: 2023-09-27 18:08:38

我试图理解如何从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)

我得到以下例外:"预期数组[float],得到列表",然后我试图将数组转换为元组,但它只适用于1D数组。

有什么建议吗?

将一个数组从IronPython传递到c#库

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