2015-05-20 2 views
3

Я использовал IronPython, чтобы добавить ссылку на C# dll. Я пытаюсь использовать метод в DLL, который требует аргумент типа:Python to C# StongBox [Single]

out float tempValue 

Когда я передать объект питона поплавка к методу я получаю следующее отслеживающий:

Traceback (most recent call last): 
    File "MeasurementComputing.py", line 20, in <module> 
TypeError: expected StrongBox[Single], got float 

Мои вопросы являются:

  1. Что такое StrongBox [Single]
  2. Как создать такой объект в Python, чтобы перейти к методу C#.

ответ

1

Для того, чтобы иметь правильную цель для выходного параметра вы должны явно создать ссылку CLR (StrongBox служит этой ссылке/значение обертки) в IronPython, так как нет из ключевых слов на стороне вызывающего абонента (например, в C#), что позволит вам это сделать.

Это может выглядеть следующим образом:

import clr 
import System 
tempValue = clr.Reference[System.Single]() 

Непосредственно создание экземпляра StrongBox также должен работать.

Обратите внимание, что вы также можете использовать методы, которые имеют только параметры, не пропускающие ничего, кроме получения кортежа, как описано here.