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