Вы можете типизировать объект .NET в IronPython? - PullRequest
6 голосов
/ 17 сентября 2009

Я взаимодействую с .NET API в IronPython. API возвращает объект неправильного типа (какой-то общий объект). Я подозреваю, что проблема не проявляется в их коде C #, потому что объявление типа при создании объекта заставляет возвращаемый объект к правильному типу. Можно ли типизировать объект .NET в IronPython? Я думаю, что это бы сработало.

Ответы [ 4 ]

8 голосов
/ 17 сентября 2009

Для принудительного преобразования вы можете сделать:

import clr
convertedObject = clr.Convert(someObject, someType)

Это будет искать и выполнять неявные / явные преобразования, если таковые существуют.

Примечание: доступно с версии IronPython 2.6.

1 голос
/ 16 октября 2014

Если вам нужно привести числовое значение к enum, используйте следующее, потому что приведенный выше код не работает для перечислений, а только для ссылочных типов:

Enum.ToObject(CustomEnumType, value)
1 голос
/ 11 января 2011

clr.Convert не существует в IronPython 2.0. Это не решение для типизации объекта .NET в IronPython ?, но это обходной путь для преобразования данных, если вам действительно нужно их использовать из IronPython

Создайте такой класс в VB.NET и скомпилируйте его в DLL

Imports Microsoft.VisualBasic

    Public Class MyConvert

        Shared Function converttype(ByVal value As String) As Integer
            Return CInt(value)
        End Function

    End Class

Тогда в IronPython вы делаете

clr.AddReference('MyConvert')
from MyConvert import converttype         
converted_value = converttype("2.0")
0 голосов
/ 06 ноября 2009

У меня была похожая проблема в проекте несколько месяцев назад. Это было мое исправление:

import clr

clr.GetPythonType(x)

x может быть типом .NET или типом в файле dll, который вы импортировали с помощью clr.

Я не программист на C #, но коллеги-программисты сказали мне, что этот код на C # будет:

typeof(x)

Надеюсь, это поможет

...