你能在IronPython中对一个.NET对象进行类型转换吗?

时间:2009-09-17 15:05:40

标签: ironpython

我正在使用IronPython中的.NET API进行连接。 API返回错误类型的对象(某种通用对象)。我怀疑问题没有出现在他们的C#代码中,因为构造对象时的类型声明是强制返回的对象为正确的类型。是否有可能在IronPython中对一个.NET对象进行类型转换?我认为这可以解决问题。

4 个答案:

答案 0 :(得分:8)

要强制转换,您可以执行以下操作:

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

这将搜索并运行隐式/显式转换(如果存在)。

注意:自IronPython 2.6开始提供。

答案 1 :(得分:1)

clr.Convert在IronPython 2.0中不存在。这不是在IronPython中对一个.NET对象进行类型转换的解决方案,但是如果您确实需要它来使用它来转换数据来自 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")

答案 2 :(得分:1)

如果您需要将数值转换为enum,请使用以下代码,因为上面的代码不适用于枚举,但仅适用于引用类型:

Enum.ToObject(CustomEnumType, value)

答案 3 :(得分:0)

几个月前,我在一个项目上遇到了类似的问题。这是我的修复:

import clr

clr.GetPythonType(x)

x可以是.NET类型,也可以是使用clr导入的dll文件中的类型。

我不是C#程序员,但C#程序员同事告诉我,C#中的这段代码将是:

typeof(x)

希望这有帮助

相关问题