繁体   English   中英

Pythonnet 无法使用集合参数调用 VB.NET 函数

[英]Pythonnet unable to call VB.NET function with collection argument

我在尝试调用TestFunc遇到问题,因为我收到TypeError: No method matches given arguments for TestFunc

我的python代码如下所示:

import sys
import clr

sys.path.append(r'C:\Users\Me\Projects\Dependencies\bin')
clr.AddReference('iCamstar')

from iCamstar import CamstarUtil

containers = []
camStar = CamstarUtil(host, port, username, password, workstation)
response = camStar.TestFunc(containers)
print(response)

VB.NET 代码如下所示:

...
Public Class CamstarUtil

  Public Structure MyContainer
    Dim ctnrName As String
    Dim productName As String
    Dim specName As String
    Dim description As String
    ...
  End Structure

  Public Sub New (ByVal host As String, ByVal port As String, ByVal user As String, ByVal pass As String, ByVal ws As String)
    ...
  End Sub

  Public Function TestFunc(ByVal containers As Collection(Of MyContainer))
    Return "Foo Bar"
  End Function

  ...

VB.NET 代码无法修改,它是一个共享库。 我已经尝试过上面显示的内容并尝试过:

from System import Array
py_array = []
net_array = Array[int](py_array)
response = camStar.TestFunc(net_array)

这也不起作用。 任何帮助,将不胜感激! 谢谢!

编辑:我刚刚尝试过这条路线:

clr.AddReference('System.Collections')
...
from System.Collections import *
...
containers = ArrayList()
...

这也不起作用

我能够通过导入正确的集合类型来解决这个问题:

from System.Collections.ObjectModel import Collection
...
containers = Collection[CamstarUtil.myContainer]()
...

原来它不是一个 Generic 集合类型!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM