#python #c# #python.net
Вопрос:
Я пытаюсь вызвать из кода python функции C# из библиотеки dll, используя Python для .NET. Большинство вещей работало из коробки, или я мог бы понять их из других сообщений, но последнее, что отказывается работать, — это передать байт[] в качестве параметра.
Вот функция C#
NCICoreConnCreateCmd (
DestinationType type, // enumeration
DestinationParameter parameter, // enumeration
byte[] val
)
Вот код на python
import COOT.Protocol.NCI.ControlMessage
import COOT.Protocol.NCI.ControlMessage.Core
# from System.Collections.Generic import List
import System.Collections.Generic as C
from System import Byte
from System import Array
t = COOT.Protocol.NCI.ControlMessage.DestinationType.NFCEE
par = COOT.Protocol.NCI.ControlMessage.DestinationParameter.RFDiscoveryIdAndProtocol
val = Array[Byte]([Byte(0), Byte(0)])
cmd = COOT.Protocol.NCI.ControlMessage.Core.NCICoreConnCreateCmd(t, par, val)
И сообщение об ошибке,
TypeError: No constructor matches given arguments: (<class 'int'>, <class 'int'>, <class 'System.Byte[]'>)
Помимо этой проблемы, как насчет приведенного ниже метода? Более сложный параметр «Список<(параметр DestinationParameter, байт[] val)> список» в дороге.
NCICoreConnCreateCmd( DestinationType type, List<(DestinationParameter parameter, byte[] val)> list)
Любое предложение будет оценено по достоинству, заранее благодарю вас.
Комментарии:
1. Согласно сообщению об ошибке, он ищет
int, int
, но вы указали два класса перечисления. Вы можете попробовать привести значения перечисления кint
перед вызовом метода C#.2. Не повезло, я меняю t amp; val на int, проблема все еще существует.
3. Вы исполнили актерский состав, как я и предлагал?
4. да, я меняю последнюю строку на NCICoreConnCreateCmd(int(t), int(par), val).