Передача массива из IronPython в библиотеку C # - PullRequest
2 голосов
/ 16 сентября 2011

Я пытаюсь понять, как передать многомерный массив с плавающей точкой из кода 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], получил список», затем я попытался преобразовать массив в кортеж, но он работал только для одномерного массива.

Любые предложения о том, как это сделать?

1 Ответ

5 голосов
/ 16 сентября 2011

Вам нужно будет создать экземпляр двумерного массива .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);
...