(Python) Использование pythonnet для вызова функции DLL (C #), которая ожидает тип ArrayList - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь запустить функцию с именем «functionName» из DLL при вызове ее из проекта Python.У меня уже есть контроль над многими функциями DLL, но при запуске «functionName» я думаю, что у меня есть проблемы с реализацией List из Pythonnet Cray Array List.

Строка из DLL, которую я пытаюсь вызвать

public int functionName(ArrayList data)

В настоящее время я пытался создать Python ArrayList через:

from System import Int32
from System import Array

data1 = [Int32(x) for x in data1]                # data1 is a list
data1 = Array[Int32](data1)                      # ArrayList Expecting 8x Arrays to be added

import clr
clr.AddReference('System.Collections')
from System.Collections.Generic import List      # Avoids Deprecation

Py_Array = System.Collections.Generic.List[Array[Int32]]()
Py_Array.Add(data1)
...
Py_Array.Add(data1)                              # 8 times total

DLL.functionName(Py_Array)

Результат всегда был:

TypeError:  No method matches given arguments

Я пробовал много разных способовисправить это, и я считаю, что проблема может принадлежать System.Collections.Generic.List не соответствует ожидаемому типу ArrayList для C #.

Любая помощь будет оценена.

Редактировать # 1

Я обнаружил, что есть также:

System.Collections.ArrayList()

Но это не решило проблему соответствия методов с аргументами

1 Ответ

0 голосов
/ 13 декабря 2018

Решением было использование python для вызова функции, написанной в C # DLL, которая берет типы и функции из первой dll.

Раздражает, но не уверен, как еще ссылаться на пользовательские типы, созданные в C # dllиз питона.

...