Вызов функции .Net из IronPython [VS2012]

Я пытаюсь вызвать функцию .Net из IronPython (VS-2012)

Функция .NET:

public int GetData(uint numberOfSamples, float[] iBuffer, float[] qBuffer){..}

IronPython:

# Here's my code in IronPython
numSamples = 1024
from array import array
iData = array('f')
qData = array('f')

GetData(numSamples, iData, qData)

Последняя строка вызовет следующее исключение (из окна Locals -VS2012)

введите описание изображения здесь

Как это исправить?


person SanVEE    schedule 20.11.2014    source источник
comment
float в IronPython эквивалентен double в C #. Может быть, в этом проблема. Ссылка: research.microsoft.com/en-us/um/cambridge/projects/infernet/   -  person NoChance    schedule 20.11.2014
comment
Я тоже пробовал с array('d'), но получаю ту же ошибку.   -  person SanVEE    schedule 20.11.2014


Ответы (2)


Вы можете передать массив floats (то есть System.Single) следующим образом:

iData = System.Array[System.Single]([1.0, 2.0, 3.0])
qData = System.Array[System.Single]([4.0, 5.0, 6.0])
GetData(numSamples, iData, qData)

РЕДАКТИРОВАТЬ: если вы хотите предварительно выделить массив и не иметь фактического содержимого Python, используйте:

iData = System.Array.CreateInstance(System.Single, 1024)
person Pawel Jasinski    schedule 21.11.2014
comment
Спасибо, Павел, похоже, это работает, но я хочу определить размер массива, а не значения, возможно ли? - person SanVEE; 21.11.2014

Хотя я принял ответ Павла, в итоге я использовал вот так

iData = Array.CreateInstance(System.Single, 1024)
qData = Array.CreateInstance(System.Single, 1024)

Я нашел из этой статьи.

person SanVEE    schedule 21.11.2014
comment
Думаю, мы занимались исследованиями одновременно :-) - person Pawel Jasinski; 21.11.2014