Python для .NET: передача байта[] в функцию C#

#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).