(Python)使用pythonnet调用需要类型为ArrayList的DLL函数(C#)

时间:2018-12-05 23:00:20

标签: c# python .net overloading python.net

我正在尝试从DLL中运行一个名为“ functionName”的函数,同时从python项目中调用它。我已经可以控制DLL的许多功能,但是运行“ functionName”时,我相信pythonnet的C#数组列表的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与C#的ArrayList的预期类型不匹配。

任何帮助将不胜感激。

编辑#1

我发现还有一个:

System.Collections.ArrayList()

但这并没有解决方法匹配给定参数的问题

1 个答案:

答案 0 :(得分:-1)

解决方案是使用python调用用C#DLL编写的函数,该函数从第一个dll获取类型和函数。

烦人但不确定如何引用来自python的C#dll中创建的自定义类型。